PAT 1048. Find Coins (25) 超简便做法!!!
2015-03-11 21:53
453 查看
@班大大
由于题面上硬币值是整数,并且有界!所以我们可以将硬币值作为下标hash。,数组value[i]表示的是面值为i的硬币的个数!!输入完成后也就省去了排序过程。两头逼近查找即可
。!机智!!
由于题面上硬币值是整数,并且有界!所以我们可以将硬币值作为下标hash。,数组value[i]表示的是面值为i的硬币的个数!!输入完成后也就省去了排序过程。两头逼近查找即可
。!机智!!
#include <iostream> #include <string.h> #include <stdio.h> using namespace std; int value[501]; int main() { memset(value,0,sizeof(value)); int N,M; cin>>N>>M; int num; int i=0; while(i<N) { scanf("%d",&num); value[num]++;//硬币值作为下标hash到数组,value【i】表示面值为i的硬币有几枚 i++; } int j=1,k=500; while(j<k) { while(!value[j])j++; while(!value[k])k--;//找到两头的非零硬币值 if(j+k>M)k--; else if(j+k<M)j++; else { cout<<j<<" "<<k<<endl; return 0; } } if(j==k&&j+k==M&&value[j]>1)//相同数值的两枚硬币组成m { cout<<j<<" "<<k<<endl; return 0; } cout<<"No Solution"<<endl; return 0; }
相关文章推荐
- PAT - 甲级 - 1048. Find Coins (25)(Hash映射)
- PAT 解题报告 1048. Find Coins (25)
- pat 1048. Find Coins (25)
- PAT_A 1048. Find Coins (25)
- 【C++】PAT(advanced level)1048. Find Coins (25)
- 浙江大学PAT_甲级_1048. Find Coins (25)
- PAT 1048. Find Coins (25)(俩端找和,i++,j--很巧秒)
- PAT (Advanced Level) 1048. Find Coins (25) 数组中两数的和
- PAT(甲级)1048. Find Coins (25)
- PAT甲级 1048. Find Coins (25)
- PAT 1048. Find Coins (25) 常见哈希应用,空间换时间
- PAT 1048. Find Coins (25)
- 1048. Find Coins (25)-PAT甲级
- PAT 1048. Find Coins (25)
- PAT (Advanced) 1048. Find Coins (25)
- PAT 1048. Find Coins (25)
- PAT-A-1048. Find Coins (25)
- 【PAT】【Advanced Level】1048. Find Coins (25)
- PAT 1048. Find Coins (25)
- 【PAT甲级】1048. Find Coins (25)