提出詳細
ソースコード
#include<stdio.h>
int serch(int na, int nb, int cou,int sq);
int numss(int ai, int bi, int ci, int di);
int a,b;
int map[11][11];
int p = 0;
int om;
int main(){
int i,j,k;
int ap,bp;
int n,in;
int ans;
scanf("%d",&n);
for(i = 0; i < n; i++){
scanf("%d %d",&a,&b);
printf("Case #%d:\n",i+1);
for(j = 0; j < b; j++){
for(k = 0; k < a; k++){
scanf("%d",&map[j][k]);
if(map[j][k] == 1){
bp = j;
ap = k;
}
}
}
for(j = 1; j < 50; j++){
om = j;
ans = serch(ap,bp,0,0);
if(ans != a * b)break;
}
if(ans == a*b)ans = 0;
printf("%d\n",ans);
}
}
int serch(int na,int nb,int cou,int sq){
if(cou >= om)return a * b;
if(map[nb][na] == 3)return a * b;
if(map[nb][na] == 2)return cou;
int num1 = a * b;
int num2 = a * b;
int num3 = a * b;
int num4 = a * b;
if(na != 0 && sq != 3) num1 = serch(na-1,nb,cou+1,1);
if(nb != 0 && sq != 4) num2 = serch(na,nb-1,cou+1,2);
if(na != a-1 && sq != 1)num3 = serch(na+1,nb,cou+1,3);
if(nb != b-1 && sq != 2)num4 = serch(na,nb+1,cou+1,4);
return numss(num1,num2,num3,num4);
}
int numss(int ai, int bi, int ci, int di){
int min = 101;
if(min > ai) min = ai;
if(min > bi) min = bi;
if(min > ci) min = ci;
if(min > di) min = di;
return min;
}
提出情報
提出出力結果
テストケース情報