2020春美団筆記試験問題1コース
13092 ワード
タイトル
にじゅうどうろ
時間制限:C/C++言語1000 MS;その他言語3000 MSメモリ制限:C/C++言語65536 KB;その他の言語589824 KB
タイトルの説明:
(1,1)の位置、すなわち左上隅に位置する2*nのメッシュがあり、左上隅から右下隅、すなわち(2,n)の位置まで歩きたいと考えています.毎回、彼は3つの操作のうちの1つを行うことができます.
問題はもちろんこんなに簡単ではありません.この2*nの格子の中には、一部の格子に障害物があり、彼は障害物に止まることができません.もちろん、グリッドを出ることもできません.何種類の異なるルートで着くことができますか(2,n).
入力入力の最初の行には、グリッドの長さを表す正の整数nが1つしか含まれていません.(1<=n<=50)次は2行あり、各行にn文字あり、「X」は障害物を表し、「.」代表は滞在できます.
出力到達可能なルートがない場合は-1を出力し、そうでない場合はシナリオ数を出力します.
サンプル入力
サンプル出力
ルール#ルール#
考え方:考えてみると、 が得られた.しかし、選択できる状況が現れた:2つの道の中で1つを選ぶことができて、つまり 次のステップで歩ける選択数を検出し、倍数を計算すると、答えが得られます.
実は考えがわかりました.コードを見ても見なくてもいいです.
にじゅうどうろ
時間制限:C/C++言語1000 MS;その他言語3000 MSメモリ制限:C/C++言語65536 KB;その他の言語589824 KB
タイトルの説明:
(1,1)の位置、すなわち左上隅に位置する2*nのメッシュがあり、左上隅から右下隅、すなわち(2,n)の位置まで歩きたいと考えています.毎回、彼は3つの操作のうちの1つを行うことができます.
1. , (x,y) (x,y+1);
2. , , (2,y) (1,y+1);
3. , , (1,y) (2,y+1);
問題はもちろんこんなに簡単ではありません.この2*nの格子の中には、一部の格子に障害物があり、彼は障害物に止まることができません.もちろん、グリッドを出ることもできません.何種類の異なるルートで着くことができますか(2,n).
入力入力の最初の行には、グリッドの長さを表す正の整数nが1つしか含まれていません.(1<=n<=50)次は2行あり、各行にn文字あり、「X」は障害物を表し、「.」代表は滞在できます.
出力到達可能なルートがない場合は-1を出力し、そうでない場合はシナリオ数を出力します.
サンプル入力
5
..X.X
XX...
サンプル出力
2
ルール#ルール#
10 , ,
“ ”
,
考え方:
X, ,
このような状況が先に検出され、-1
が現れて、このような状況は、もちろんです!確率は2倍、 *2
実は考えがわかりました.コードを見ても見なくてもいいです.
,
コードを見ないでください.コードを次のように配置します.#include
#include
void right(int *x,int *y)
{ *x=*x;
*y=*y+1;}
void rightUp(int *x,int *y)
{*x=1;
*y=*y+1;}
void rightDown(int *x,int *y)
{*x=2;
*y=*y+1;}
int path[1][50];
int main(){
int length = 0;
char grid[2][50];
int i=0;
int j =0;
for(i=0;i<2;i++){
for(j=0;j<50;j++){
grid[i][j]=0;
}
}
scanf("%d",&length);
for(i=0;i<2;i++){
scanf("%s",grid[i]);
//printf("%s
",grid[i]);
}
int walk = 1;
for(i=0;i<50;i++){
if(grid[0][i]==0){
break;
}
if(grid[0][i]=='X'&&grid[1][i]=='X'){
printf("-1");
exit(0);
}
if(grid[0][i]=='.'&&grid[1][i]=='.'){
walk=walk*2;
}
}
printf("%d",walk);
}