算法复习——猜数问题

Posted AseanA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法复习——猜数问题相关的知识,希望对你有一定的参考价值。

  上面这道题的四个KC的分类范围的解题方法可以直接在龙凡的《一类猜数问题的研究》找到··为了版权问题我这里就不贴了···

  代码:

  

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cctype>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
inline long long R(){
    char c;long long f=0;
    for(c=getchar();c<\'0\'||c>\'9\';c=getchar());
    for(;c<=\'9\'&&c>=\'0\';c=getchar())    f=f*10+c-\'0\';
    return f;
}
int T;
long long n,k,c;
long long f1=0,f2[80000][105],f3[505],f4[70000][105];
int main()
{
    T=R();
    while(T--){
        n=R(),k=R(),c=R();
        if(n==k&&c==0){
            f1=0;int tim=0;
            while(f1<n){
                f1=2*f1+1;
                tim++;
            }
            cout<<tim<<"\\n";
        }
        else if(c==0){
            bool flag=false;
            for(int i=1;;i++){
                if(flag)  break;            
                for(int j=1;j<=k;j++){
                    f2[i][j]=f2[i-1][j-1]+f2[i-1][j]+1;
                        if(f2[i][j]>=n){
                            cout<<i<<"\\n";flag=true;
                            break;
                        }
                }
            }
        }    
        else if(n==k&&c!=0){
            for(int i=2;;i++){
                f3[i]=f3[i-1]+f3[i-2]+1;
                if(f3[i]>=n){
                    cout<<i<<"\\n";
                    break;
                }
            }
        }
        else{
            bool flag=false;
            for(int i=2;;i++){
                if(flag)    break;
                for(int j=1;j<=k;j++){
                    if(j>1)f4[i][j]=max(f4[i-1][j-1]+f4[i-2][j],f4[i-2][j-2]+f4[i-1][j])+1;
                    else f4[i][j]=max(f4[i-1][j-1]+f4[i-2][j],f4[i-1][j])+1;
                    if(f4[i][j]>=n){
                        cout<<i<<endl;
                        flag=true;break;
                    }
                }
            }
        }
    }
    return 0;
}

 

以上是关于算法复习——猜数问题的主要内容,如果未能解决你的问题,请参考以下文章

python二级练习和考试复习(设计一个猜数游戏)

从猜数游戏到二分查找算法

模拟算法_掷骰子游戏&&猜数游戏

猜数游戏

猜数游戏

1536 不一样的猜数游戏