问题标题: 酷町堂:1248 数字游戏2

0
0
已解决
王学庚
王学庚
初级光能
初级光能
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdio>
using namespace std;
int main()
{
    int a[101],s,n,m=0;
    cin>>s>>n;
    for(int i=0;i<s;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<s;i++)
   {
    for(int j=i+1;j<s;j++)
    {
        if(a[i]==a[j])
        continue;
        if((a[i]+a[j])==n)
        {
            cout<<"Y";
            m=999999999;
            break;
           }

       }
   }
   if(m!=999999999)
   cout<<"N";
    return 0;
 } 

 


0
已采纳
李祈乐
李祈乐
新手光能
新手光能

先输入n,x和这个数组,我们只要判断这些数中是否有任意两个数存在相加==x。

思路就是:从第一个数开始,如果第一个数加上任意后面n-1个数中的一个等于x,如果是,就输出Y,退出程序,如果没有,从第二个数开始加到后面n-2个数,如果循环结束,就没有任何两个数和满足x,输出N;即:

for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            if(a[i]+a[j]==x)
            {
                cout<<"Y";
                return 0;
            }
        }
    }
//接下来,如果循环结束并且程序继续时,说明不满足条件,输出N

注:循环时,不需要考虑i第一次循环完时漏加了前面的数,a[1]+a[2]和a[2]+a[1]是一样的

0
我要回答