b004: 一個都不能少
題目
進德女子監獄座落於自由女中旁,是間作風開放的監獄,每到中午時間便會放風讓收容人到外面用餐。當然還是會有人逾時不歸,身為管理者的美惠,每天總是要為哪些人沒有回來而傷透腦筋。現在想請你寫一個程式,幫助美惠找出哪些人沒有回來。
輸入說明:
一開始有兩個正整數 N、M (0<=M<N<=20),N 代表收容人的人數(編號從 1 到 N),M 代表回來的人數,接下來有 M 個正整數,分別代表這 M 位已經回來的收容人編號(不用考慮編號超出範圍或其他錯誤)。
解題方向
我覺得這一題我的解法算笨
我想說直接把犯人編號當陣列的索引用
然後在回來的編號裡面放值
最後再去檢查
應該還可以再精簡一點
感覺有些程式碼有點多餘
不過我懶得改:P
範例程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| #include <iostream>
using namespace std;
int back[22]={0};
int out[22]={0};
int N,M;
int is_out(int);
int temp;
int main() {
cin>>N>>M;
int outNum=N-M;
for(int i=0;i<M;i++){
cin>>temp;
back[temp]=temp;
temp=0;
}
for(int i=1;i<=N;i++){
if(back[i]>0){
out[i]=0;
continue;
}else{
out[i]=i;
}
}
for(int i=0;i<22;i++){
if(out[i]==0){
continue;
}else{
cout<<out[i]<<" ";
}
}
return 0;
}
|