1048. Find Coins (25)
2016-03-09 23:44
381 查看
题目传送门:https://www.patest.cn/contests/pat-a-practise/1048
AC代码 此种方法请注意 该数字正好是目标的二分之一时,如果只有一个数字应该输出无解.
#include <iostream>
#include <vector>
#include <stdio.h>
#include <algorithm>
#include <queue>
#include <string.h>
#include <unordered_map>
using namespace std;
int main(){
int n,m;
unordered_map<int,int>ans;
scanf("%d %d",&n,&m);
vector<int>nums(n);
for (int i=0; i<n; ++i) {
scanf("%d",&nums[i]);
ans[nums[i]]++;
}
sort(nums.begin(), nums.end());
int k = -1;
for (int i=0; i<n; ++i) {
if(ans[m-nums[i]]!=0){
if(nums[i]==m-nums[i]&&ans[nums[i]]==1)
continue;
k = i;
break;
}
}
if(k==-1)
printf("No Solution\n");
else
printf("%d %d\n",nums[k],m-nums[k]);
return 0;
}
AC代码 此种方法请注意 该数字正好是目标的二分之一时,如果只有一个数字应该输出无解.
#include <iostream>
#include <vector>
#include <stdio.h>
#include <algorithm>
#include <queue>
#include <string.h>
#include <unordered_map>
using namespace std;
int main(){
int n,m;
unordered_map<int,int>ans;
scanf("%d %d",&n,&m);
vector<int>nums(n);
for (int i=0; i<n; ++i) {
scanf("%d",&nums[i]);
ans[nums[i]]++;
}
sort(nums.begin(), nums.end());
int k = -1;
for (int i=0; i<n; ++i) {
if(ans[m-nums[i]]!=0){
if(nums[i]==m-nums[i]&&ans[nums[i]]==1)
continue;
k = i;
break;
}
}
if(k==-1)
printf("No Solution\n");
else
printf("%d %d\n",nums[k],m-nums[k]);
return 0;
}
相关文章推荐
- 从事web开发方向的一些思考
- Android Studio参数详解
- c++注释
- 【hdu1203】I NEED A OFFER!——01背包
- 学习进度总结随笔
- 单例模式
- 编程小练习4
- Linux命令之find
- [everydayNote] 每天进步就会很开心
- Linux ssldump命令
- 注释转换
- 浅析objective-c中的strong和weak
- Spring中的Bean定义
- HDU 5464 Clarke and problem 动态规划
- Bomb(数位DP)
- eventlet引发的学习:协程
- Poj2831 树链剖分||次小生成树
- 转点信息
- 不同类型的变量与零值比较的方法
- jquery datatables 一些有用的用法