PAT:1048. Find Coins (25)(哈希表法) AC

#include<stdio.h>
#include<string.h>

int HARSH[1066];

int main()
{
  memset(HARSH,0,sizeof(HARSH));
  int n,m;
  scanf("%d%d",&n,&m);
  for(int i=0 ; i<n ; ++i)
  {
    int tmp;
    scanf("%d",&tmp);
    ++HARSH[tmp];
  }
  for(int i=0 ; i<1066 ; ++i)
  {
    if(HARSH[i]==0)          //这个数字没有
      continue;
    if(HARSH[m-i]>0)
    {
      if(i==m-i && HARSH[i]<2)  //这两个数字相同的时候,但是只有一个可用,也是不行的
        continue;
      printf("%d %d",i,m-i);    //已经排除了输出不了的可能,条件都满足就输出
      return 0;
    }
  }
  printf("No Solution");
  return 0;
}
posted on 2015-03-04 00:38  Evence  阅读(154)  评论(0编辑  收藏  举报