深信服笔试,抓兔子
*問(wèn)題描述:抓兔子
n個(gè)排成一排的洞,編號(hào)為1到n,兔子每天晚上會(huì)跳到相鄰的一個(gè)洞里,小q每天只能白天檢查其中的一個(gè)洞,
小q會(huì)告訴你每天檢查的洞,分析是否一定能抓到兔子
示例:3個(gè)洞,第一天檢查2號(hào)洞,第二天檢查2號(hào)洞,就會(huì)抓到兔子
輸入描述:n,k(n,k<1e3)分別代表洞的個(gè)數(shù),小q檢查的天數(shù)
接下來(lái)k個(gè)數(shù),表示小q檢查洞的個(gè)數(shù)
?
分析:可以通過(guò)dp方法解決,代碼如下,有注釋
#include<bits/stdc++.h> using namespace std;int caclute[1005][1005];//通過(guò)動(dòng)態(tài)規(guī)劃記錄數(shù)據(jù) int main() {int n,k;//n代表洞的個(gè)數(shù),k代表檢查的天數(shù)int check[1005];//用來(lái)存儲(chǔ)每天檢查洞的位置cin>>n>>k;for(int i = 0;i < k;i++)cin>>check[i];//處理第一天檢查for(int i=0;i<n;i++){caclute[0][i]=1;} caclute[0][check[0]-1]=0;//循環(huán)處理for(int i = 0;i<k;i++){//每天輪著進(jìn)行檢查for(int j = 0;j<n;j++){if(caclute[i][j] == 1){if(j == 0)caclute[i+1][j+1] = 1;else if(j == n-1) caclute[i+1][j-1]=1;else{caclute[i+1][j+1] = 1; caclute[i+1][j-1]=1;}}}caclute[i+1][check[i+1]-1]]=0;}int flag=1;for(int i = 0;i<n;i++){if(caclute[k][i] == 1){flag = 0;break;}}if(flag)puts("yes");else puts("no"); }
?
轉(zhuǎn)載于:https://www.cnblogs.com/lyf-sunicey/p/9319010.html
總結(jié)
- 上一篇: DPDK helloworld 源码阅读
- 下一篇: 学习日志---7