前提・実現したいこと
下記問題文の実装にあたり、
https://atcoder.jp/contests/abc045/tasks/abc045_b
本文下部に掲載のソースコードのとおりにプログラムを実装しましたが、
テストケースの一部が通らず不合格となってしまっております。
本問のテストケースは非公開の為、どこに問題があるのか見当がつかず、バグの修正が出来ない状況です。
問題となりうる箇所や本問のケースに必要と思われるテストケースや
テストケース作成の思考過程についてご教示いただければ大変ありがたいです。
ソースコード自体もこう変更したほうがよい、などのアドバイスがあればご教示いただけると大変幸いです。
仕様概要としてはA,B,Cの3プレイヤーのうち、だれが勝利するかを表示するか求める、というものです。
ルールとしては
・最初にAがカードを引く
・引いたカードに応じて次にカードを引くプレイヤーが決まる(aならばA,bならばB、cならばCが次にカードを引く)
・自分のターンで次に引くカードがなければ勝利
該当のソースコード
C
1#include <stdio.h> 2 3char Sa[101], Sb[101], Sc[101]; 4int ai=0,bi=0,ci=0; 5 6void turn(char s[], int *i){ 7 8 if(s[*i]=='a'){ 9 ai++; 10 turn(Sa, &ai); 11 }else if(s[*i]=='b'){ 12 bi++; 13 turn(Sb, &bi); 14 }else if(s[*i]=='c'){ 15 ci++; 16 turn(Sc, &ci); 17 }else if(s[*i]=='\0'){ 18 if(s==Sa) { 19 puts("A"); 20 } else if(s==Sb){ 21 puts("B"); 22 } else if(s==Sc){ 23 puts("C"); 24 } 25 } 26 27} 28 29int main(void){ 30 31 scanf("%s",Sa); 32 scanf("%s",Sb); 33 scanf("%s",Sc); 34 35 turn(Sa, &ai); 36 37 return 0; 38 39}
お知らせ
正解のソースコードなどもご教示いただきましたが、
結局、自分が作成した元のソースコードの何が拙いか自分の力では究明できなさそうなので、
しばらく間をおいてから再チャレンジしてみたいと思います。
ためしてみたこと
・printfを挟んで問題となりそうなところの切り分け
・ステップ確認は利用エディタ(VS code)のデバッグ機能の使い方がよくわからなかったため、こちらも暫定的に放棄しております・・・