コーディング練習@Coder.1
AtCoderによるコーディングの訓練日記です。可読性の高いコードも目指していきたいです。言語はC。ご指摘があればよろしくお願いいたします。可読性に関しては
を参考にしています。がまだまだド素人です。
コンテスト166のB問題。問題文:
問題
お菓子が数種類(各種の個数も与えられる)あってこれを配る。お菓子をもらえなかったsnuke(すぬけ)の人数を出力する問題。
方針
お菓子をもっている/いないのニ値配列を人数分用意して全部1で初期化。ある人に菓子が配られたら0にする。最後に足しあわせる。
実装
#include<stdio.h>
int main(){
int n_snuke;
scanf("%d", &n_snuke);
int has_trts[n_snuke+1];
//お菓子を持っている->0;持っていない->1
for(int snuke = 1; snuke <= n_snuke; snuke++)
has_trts[snuke] = 1;
int n_trtkinds;
scanf("%d", &n_trtkinds);
for(int trt_i = 1; trt_i <= n_trtkinds; trt_i++){
int n_trt_i, trt_i_to;
scanf("%d", &n_trt_i);
for(int trt_i_index = 1; trt_i_index <= n_trt_i; trt_i_index++){
scanf("%d", &trt_i_to);
has_trts[trt_i_to] = 0;
}
}
int ans = 0;
for(int snuke = 1; snuke <= n_snuke; snuke++)
ans += has_trts[snuke];
printf("%d", ans);
return 0;
}
感想
他に計算量を節約できる方法ってあるのか…変数の名付けって難しすぎ。英語力のなさ。というかすぬけって誰だよ。(追記2020/5/9:snukeさんはAtCoder運営側のレッドコーダーでした。普通にすごい人でした。)