お元気さまです。わくワークの義(ヨシ)です。
プログラミングスキルアップのために、paizaラーニングの練習問題を解いています。
練習問題は、次のリンクから確認できます。
57点でした・・・
テストケース1、2、6、7はパスしたのですが、3、4、5の出力結果が間違えているという結果でした。
提出したコードは、次のとおりです。
#include <stdio.h>
int main(void){
char str[1000];
char map[51][52];
char d;
int h,w,y,x,n,i,sw,t,c,nc;
fgets(str, sizeof(str), stdin);
sscanf(str,"%d %d %d %d %d",&h,&w,&y,&x,&n);
for(i=0;i<h;i++){
fgets(str,sizeof(str),stdin);
sscanf(str,"%s",map[i]);
}
sw=0;
c=0;
nc=0;
map[y][x]='*';
for(i=0;i<100;i++){
if(nc>n&&i>t) break;
if(sw==0){
fgets(str,sizeof(str),stdin);
sscanf(str,"%d %c",&t,&d);
nc++;
sw=1;
}
if(i==t){
if(d=='R'){
if(c==0){
x++;
}
else if(c==1){
y++;
}
else if(c==2){
x--;
}
else {
y--;
}
c++;
if(c==4) c=0;
}
else if(d=='L'){
if(c==0){
x--;
}
else if(c==1){
y--;
}
else if(c==2){
x++;
}
else {
y++;
}
c--;
if(c<0) c=3;
}
sw=0;
}
else {
if(c==0){
y--;
}
else if(c==1){
x++;
}
else if(c==2){
y++;
}
else {
x--;
}
}
if(x<0||y<0||x==w||y==h||map[y][x]=='#'||map[y][x]=='*'){
break;
}
else {
map[y][x]='*';
}
}
for(i=0;i<h;i++){
printf("%s\n",map[i]);
}
return 0;
}
Aランクは、難しいです。
解決策が、わからないので次に進んでみます。
それでは、今日もワクワクな一日を!
チャオチャオ!