この記事では主に openjudge 2971: Catch the Cow の問題解決プロセスについて説明します。困っている友人はそれについて学ぶことができます。お役に立てれば幸いです。
合計制限時間: 2000ms
メモリ制限: 65536kB
説明
農場主は牛の位置を知っているので、牛を捕まえたいと考えています。農家と牛はどちらも数直線上に位置しており、農家は点 N (0
1. X から X-1 または X 1 に移動します。各移動には 1 分かかります。
2. X から 2*X に移動します。各移動には 1 分かかります。
牛が農夫の行動に気づかず、静止しているとします。農家が牛を捕まえるまでに最低どれくらいの時間がかかりますか?
入力
2 つの整数、N と K
出力
整数 (農家が牛を捕まえるのにかかる最小分数)
サンプル入力
5 17
サンプル出力
4
この質問は水に関する質問です。しかし。とても混乱します。要約すると、BFS は
1 であり、配列は十分に開いています。
2、丹生さんと私の方向性判断。
3、チームへの参加の判断を繰り返します。
4、超越的な判断力。
5、良い性格です。これが鍵です。
コードは次のとおりです:
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int x,y; 5 struct node 6 { 7 int x,times; 8 }; 9 node q[3000010]; 10 int visit[1000010]; 11 int heads=1,last=1; 12 int main() 13 { 14 scanf("%d%d",&x,&y); 15 if(y<x) 16 { 17 printf("%d",x-y); 18 return 0; 19 } 20 node a; 21 a.x=x;a.times=0; 22 q[heads]=a; 23 while(heads<=last) 24 { 25 node n=q[heads]; 26 heads++; 27 if(n.x==y) 28 { 29 printf("%d",n.times); 30 break; 31 } 32 node n1=n; 33 n1.times++; 34 n1.x+=1; 35 if(!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 36 n1.x-=2; 37 if(!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 38 n1.x+=1; 39 n1.x*=2; 40 if(n1.x<=100000&&!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 41 } 42 return 0; 43 }
これは本当に恥ずかしいことです。
関連チュートリアル: C ビデオ チュートリアル
以上がopenjudge 2971: 牛の問題解決プロセスを把握する (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。