1048 Find Coins (25 分)
思路
这里有个坑,哈希表尽量做两倍以上,因为限制在500以内,但目标在1000以内,它们做差,可能出现1000-1=999的情况,做大一点。
同一张大小出现多次的情况需要分开讨论,不要为了代码简洁就全堆一个if里。
这里的哈希表用的不是bool,因为要记录出现的次数,而不仅仅是有无出现,所以用int类型。
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
int num;
int hash[1005]={
0};
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>num;
hash[num] +=1;
}
for(int i =0 ; i<=m/2;i++)
{
if(i==m-i)
{
if(hash[i]>=2)
{
cout<<i<<" "<<m-i<<endl;
return 0;
}
else {
continue;}
}
if(hash[i]>0 && hash[m-i]>0)
{
cout<<i<<" "<<m-i<<endl;
return 0;
}
}
cout<<"No Solution"<<endl;
}