标签:
猜数问题:有一个被猜数X,是1到N的范围内的整数,你每次可以给出一个整数Y。你会在你问下一个问题之后得到你这个问题的回答,即X与Y的大小关系。并且如果你得到了K次X<Y的回答,游戏就结束,你要避免这种情况的发生。
Analyse:
f[i][j],表示i次猜数,j次X<Y的情况的处理长度。
友链:猜数问题研究论文
CODE:
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #include<string> #include<queue> #include<deque> #include<stack> #include<map> #include<set> #define INF 0x7fffffff #define SUP 0x80000000 #define mem(a,b) memset(a,b,sizeof(a)) using namespace std; typedef long long LL; const int N=100007; int dp[N][111]; int main() { int n,k; while(scanf("%d%d",&n,&k)==2) { int ans=0; for(int i=2;;i++) { for(int j=2;j<=k;j++) { dp[i][j]=max(dp[i-2][j]+dp[i-1][j-1],dp[i-1][j]+dp[i-2][j-2])+1; if(dp[i][j]>=n) { ans=i; break; } } if(ans) break; } printf("%d\n",ans); } return 0; }
标签:
原文地址:http://blog.csdn.net/code_or_code/article/details/44747767