結果
問題 | No.345 最小チワワ問題 |
ユーザー |
![]() |
提出日時 | 2018-09-11 19:04:45 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 1 ms / 2,000 ms |
コード長 | 1,252 bytes |
コンパイル時間 | 1,154 ms |
コンパイル使用メモリ | 29,440 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-01 05:08:46 |
合計ジャッジ時間 | 1,196 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 29 |
ソースコード
// 与えられた文字列が c w w の順になる時、その文字の長さ #include <stdio.h> int main(void){ char S[101]; // 1 <= S <= 100 int start,goal; // c 〜 2回目のwまで int w; // wの回数をカウント int moji = 0; // 入力値の文字数 int minL = 1000; // cww列の最小値 scanf("%s",S); start = -1; // ありえない数字を置いておく for(int k = 0; S[k] != 0; k++){ moji++; } for(int j = 0; j < moji; j ++){ for(int i = 0; S[i] != 0; i++){ // 前回のループのstartは除外したい.初期値をマイナスにする if( (S[i] == 'c')&&(i > start) ){ // 計測開始 ccwwccwの時どうする? start = i; break; } } if(start == -1){ // cがないなら終わり printf("-1\n"); return 0; }else{ w = 0; for(int j = start; S[j] != 0; j++){ if(S[j] == 'w'){ w += 1; if(w == 2){ // wが2回出たら計測終了 goal = j; break; } } } } if(w >= 2){ // wが2つないなら終わり if(minL > goal - start + 1){ minL = goal - start + 1; } } } if(minL == 1000){ printf("-1\n"); }else{ printf("%d\n",minL); } return 0; }