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

0
0
已解决
陈振轩
陈振轩
高级光能
高级光能
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int x, n;
    cin >> n >> x;
    int a[n + 1];
    for (int i = 1; i <= n; ++i)
        cin >> a[i];
    for (int i = 1; i <= n; ++i)
    {
        if (a[i] + a[i + 1] == x)
        {
            cout << "Y";
            return 0;
        }
    }
    cout << "N";
     return 0;
}

八十分


0
已采纳
舒航
舒航
新手守护
新手守护

看了你的代码,我想你应该没有考虑到两个数之间可以没有空隙的问题:

例如输入:

5 6

1 2 3 4 5

答案是Y,你的答案是N。

为什么呢?

因为两个数和为6可以不是相邻的。这题需要用到循环嵌套,也就是用两个for循环

第一个循坏从1到n-1,第二个循环从i+1到n,判断为等于X。

另外这道题的范围是n<100,双重循环是O(10000),不需要考虑超时现象。

我要回答