• 2012年蓝桥杯省赛A组c++第4题(电视台答题比赛)


    /* 
    某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪: 
    每位选手需要回答10个问题(其编号为1到10),越后面越有难度。
    答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理 
    每位选手都有一个起步的分数为10分。 
    某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗? 
    如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。 
    答案写在“解答.txt”中,不要写在这里! 
    */
    
    #include<cstdio>  
    #include<cstring>  
    #include<algorithm>  
    #include<iostream>  
    #include<string>  
    #include<vector>  
    #include<stack>  
    #include<bitset>  
    #include<cstdlib>  
    #include<cmath>  
    #include<set>  
    #include<list>  
    #include<deque>  
    #include<map>  
    #include<queue>  
    using namespace std;
    
    int result[11]={0};
    
    void dfs(int steps,int score)
    {
        if(steps==11)
        {
            if(score==100)
            {
                for(int i=1;i<=10;i++)    cout<<result[i];
                cout<<endl;
            }
            return;
        }
        result[steps]=1;
        dfs(steps+1,score*2);
        
        result[steps]=0;
        dfs(steps+1,score-steps);
        return;
    }
    
    int main()
    {
        dfs(1,10);
        return 0;
    }

    可以用暴力简单解决的一道题,但是还是手痒用dfs算法写完了。注意一点:不能在dfs函数内写if(steps==11&&score==100),这样会导致答到第十题但分数不是100,却会继续dfs的情况,此时虽然能编译通过,但是操作系统会报超时错误(因为dfs永远走不完)。

    tz@COI HZAU

    2018/3/23

  • 相关阅读:
    DropDownList 禁止选择某一项
    C语言文件操作函数(ANSI)详解(二)
    c语言中break与continue的区别
    指针函数
    C语言文件操作函数(ANSI)详解(一)
    结构体指针
    ASCII\UNICODE编码的区别
    函数调用二维数组例子
    getchar()函数getch()函数区别
    C语言 二维数组做函数参数的几种情况
  • 原文地址:https://www.cnblogs.com/acm-icpcer/p/8631501.html
Copyright © 2020-2023  润新知