iT邦幫忙

0

請問要怎麼修改才能三筆皆執行?

  • 分享至 

  • xImage

#include <bits/stdc++.h>
using namespace std;
int main() {
int N,M,i,x,cnt=0;
int a[10000+5]={};
while(cin>>N>>M){
for(i=1;i<=M;i++){
cin>>x;
a[x]=1;
}
for(i=1;i<=N;i++){
if(a[i]==0){
cout<<i<<" ";
cnt++;
}
}
if(cnt==0) cout<<"@";
cout<<endl;
}
}
輸入說明
多筆測資,每筆測資兩行,
第一行兩個整數 N、M,N 為參戰的士兵人數,M 為登記號碼數,
第二行有 M 個整數,代表回歸士兵的登記的兵籍號碼。
(1 < N、M <10000)

輸出說明
每筆測資輸出一行,
輸出所有不幸喪生的士兵兵籍號碼 (由小到大)。
如果全部士兵都生還,則輸出 '@'
格式如範例
範例輸入
7 4
3 1 5 7
6 6
6 1 3 2 5 4
6 8
6 1 1 1 2 5 2 5
範例輸出
2 4 6
@
3 4
目前分開執行是正確的,但一起執行時只有2 4 6

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
screenleon
iT邦新手 1 級 ‧ 2021-05-27 08:37:13
最佳解答

你每次結束後,有些變數應該要重製

int main()
{
    int N, M, i, x;
    while (cin >> N >> M)
    {
        int cnt = 0;
        int a[10000 + 5] = {};
        for (i = 1; i <= M; i++)
        {
            cin >> x;
            a[x] = 1;
        }
        for (i = 1; i <= N; i++)
        {
            if (a[i] == 0)
            {
                cout << i << " ";
                cnt++;
            }
        }
        if (cnt == 0)
            cout << "@";
        cout << endl;
    }
}
1

我要發表回答

立即登入回答