Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "A New Plan of Aizu Ski Resort"
https://onlinejudge.u-aizu.ac.jp/problems/0203
・会津山スキー場の新企画
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #Volume2 : 0203 - A New Plan of Aizu Ski Resort
/* Aizu Online Judge in C++ #Volume2 : 0203 - A New Plan of Aizu Ski Resort https://onlinejudge.u-aizu.ac.jp/problems/0203 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; ll x,y,c[17][17],s,i,j; void DFS(ll Y,ll X){ if(c[Y][X]==1){ return; } if(X<1 || X>x){ return; } if(Y>=y){ s++; return; } if(c[Y][X]==2){ DFS(Y+2,X); }else{ if(c[Y+1][X]!=1){ DFS(Y+1,X); } if(c[Y+1][X+1]==0){ DFS(Y+1,X+1); } if(c[Y+1][X-1]==0){ DFS(Y+1,X-1); } } } int main(void){ while(cin>>x>>y,x){ for(s=0,i=0;i<17;i++){ for(j=0;j<17;j++){ c[i][j]=0; } } for(s=0,i=1;i<=y;i++){ for(j=1;j<=x;j++){ cin>>c[i][j]; } } for(i=1;i<=x;i++){ if(c[1][i]==0){ DFS(1,i); } } cout<<s<<endl; } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/