b004. 一個都不能少

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;
}
Never Too Late To Start
使用 Hugo 建立
主題 StackJimmy 設計