C++ 为SPOJ smpseq获取WA

C++ 为SPOJ smpseq获取WA,c++,C++,以下是问题的链接: 我每次都得到WA,尽管代码适用于我尝试过的所有测试用例 请给我一个提示。我是这方面的初学者 这是我的密码 #include<iostream> using namespace std; int main() { int n, m; bool check; int cnt=0; cin >> n; int s[n]; int c[n]; for(int i = 0; i < n; i++)

以下是问题的链接:

我每次都得到WA,尽管代码适用于我尝试过的所有测试用例

请给我一个提示。我是这方面的初学者

这是我的密码

#include<iostream>
using namespace std;

int main()
{
    int n, m;
    bool check;
    int cnt=0;
    cin >> n;
    int s[n];
    int c[n];
    for(int i = 0; i < n; i++)
        cin >> s[i];

    cin >> m;
    int q[m];
    for(int i = 0; i < m; i++)
        cin >> q[i];

    for(int i = 0; i < n; i++)
    {
        check = false;
        int j = 0;

            while(q[j] <= s[i])
            {

                if(q[j] == s[i])
                    check = true;
                j++;
            }

            if(check == false)
            {
                c[cnt] = s[i];
                cnt++;
            }

    }

    for(int i = 0; i < cnt; i++)
        cout << c[i] << " ";

    return 0;
}
#包括
使用名称空间std;
int main()
{
int n,m;
布尔检查;
int-cnt=0;
cin>>n;
int s[n];
int c[n];
对于(int i=0;i>s[i];
cin>>m;
int q[m];
for(int i=0;i>q[i];
对于(int i=0;i当(q[j]编码失败时,因为您没有检查
j
的值是否小于
m
,您只需继续增加它,直到达到
q[j]aa
b>=a
的值为止(S是排序序列),因此
b>aa
也是如此。因此,您不需要在每次迭代开始时初始化
j=0
,这将节省浪费的计算。您只需要在
main
开始时初始化
j=0


此外,您不需要将结果保存在新数组中,当遇到
check==false
时,您可以简单地将其打印出来,这样可以节省一些空间。

打印额外的空间而不打印换行符可能不适合在线评委。@MikeCAT额外的空间在哪里?我应该在哪里打印换行符?我不认为需要。我得到的输出正如问题中所示
while(j < m && q[j] <= s[i])