C语言:判断数组中是否有两个数的和等于某定值。

某组织欲破获一个外星人的密码,密码由一定长度的字串组成。此组织拥有一些破译此密码的长度不同的钥匙,若两个钥匙的长度之和恰好为此密码的长度,则此密码被成功破译。现在就请你编程找出能破译此密码的两个钥匙。

【标准输入】
第一行: N N为钥匙的个数(1<=N<=1000)
第二行: L L为密码的长度
以下有N行: Ai 每一行是一把钥匙的长度 i=1,2,……,N
【标准输出】
若无法找到破译此密码的钥匙,则输出0
若找到两把破译的钥匙,则输出文件有两行,分别为两把钥匙的编号,按从小到大输出。若有多种破译方案,则只输出包含起始编号最小的一组即可。

int main()
{
int N=1000;//钥匙个数
int L=500;//密码长度
int i,j;
int A[1000];//钥匙数组
int label=0;
//用循环去判断这个数组里的任意两个相加是否满足等于密码值,用label=1标记“找到了”,跳出两层循环,输出找到。当label等于默认值0时,标记没找到。
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if(A[i]+A[j]==L)
{
label=1;
break;
}
}
if(label==1)
{
break;
}
}
if(label==1)
{
printf("Find the answer.");
}
else
{
printf("No answer.");
}
return 0;
}

这个程序不能运行,因为没有给出数组里面每个钥匙的值。只要赋值之后便可运行。
温馨提示:答案为网友推荐,仅供参考
相似回答