7-1 和为某个值的两个数 (10 分)

7-1 和为某个值的两个数 (10 分)

有一个整数数组L,有N个元素,请找出数组中和为S的两个不相等的元素,并将这两个数按从小到大顺序输出,如果有多对数字满足要求,输出第一对即可,如果不存在满足条件的数对,输出Not found。

输入格式:

输入为一组整数,第一行是整数N(0<N<=100),为数组元素的个数。 第二行是n个整数,是数组的N个元素。 第三行是S,为题目中指定的和值。

输出格式:

如果存在满足条件的数对,请输出第一对整数即可(按数组中的前后顺序输出),否则输出“Not found”。

输入样例1

5
7 5 2 10 4
9

输出样例1

2 7

输入样例2

8
2 3 5 7 10 13 20 25
43

输出样例2

Not found

输入样例3

8
12 13 15 17 10 13 10 25
20

输出样例3

Not found

跑一下这个代码,应该这个效果

#include<stdio.h>
int main(){
    int n,i,j;
    int a[100];
    int s;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d ",&a[i]);
    }
    scanf("%d",&s);
    for(i=0;i<n;i++){
        for(j=i+1;j<n;j++){
            if(a[i]!=a[j]&&a[i]+a[j]==s){
                a[i]<a[j]?printf("%d %d",a[i],a[j]):printf("%d %d",a[j],a[i]);
                return 0;
            }
        }
    }
    printf("Not found");
    return 0;
}
int main()
{
	int n,i,j,sum;
	scanf("%d",&n);
	int *p = new int[n];
	for(i=0;i<n;i++)
		scanf("%d",&p[i]);
	scanf("%d",&sum);
	//
	bool bFound = false;
	for(i=0;i<n;i++)
	{
	  for(j=i+1;j<n;j++)
	  {
		  if((p[i]+p[j] == sum) && p[i]!=p[j])
		  {
			  int min=p[i],max=p[j];
			  if(min > max)
			  {
				  min = p[j];
				  max = p[i];
			  }
			  printf("%d %d\n",min,max);
			  bFound = true;
			  break;
		  }
	  }
	  if(bFound)
		  break;
	 }
	if(!bFound)
		printf("Not found\n");
	return 0;
}

 

用2个循环嵌套就可以了。找到一次后就终止循环。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^