提交代码仅有测试点1未通过,建议测试以下用例:
input
5 15
1 16 15 12 20
ouput(right)
No Solution
若使用标记数组记录数字出现次数,且在循环中不对标记数组中大于总钱数的值进行处理,则有可能输出错误:
20 -5
修改后的代码(未优化):
#include<stdio.h>
#include<stdlib.h>
int cmp_int(const void *a,const void *b){
return *(int *)a - *(int *)b;
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
int num[n];
int have[100010] = {0};
for(int i = 0;i < n;i++){
scanf("%d",&num[i]);
have[num[i]]++;
}
qsort(num,n,sizeof(num[0]),cmp_int);
int i;
for(i = 0;i < n;i++){
if(num[i] == 0){
break;
}
if(num[i] == m - num[i]){
if(have[num[i]] >= 2){
printf("%d %d",num[i],num[i]);
break;
}
}else if(num[i] < m){
if(have[m - num[i]] >= 1){
printf("%d %d",num[i],m - num[i]);
break;
}
}
}
if(i == n){
printf("No Solution");
}
return 0;
}
运行即可~
来源:CSDN
作者:熬夜运动员
链接:https://blog.csdn.net/qq_39117553/article/details/104728966