zoukankan      html  css  js  c++  java
  • aoj0033

    一、题意:有十个数,判断是否能分成两个递增序列

    二、思路:

      1、dfs:每个数判断在左边或者右边,遍历所有情况。

      2、贪心:在保证递增序的前提下,判断一个数放左边或者右边,决定于其更接近于哪一边最上面的一个数

    三、代码:

    1、

    #include"iostream"
    #include"stdio.h"
    using namespace std;
    int ball[11];
    bool flag;
    
    void Dfs(int i,int left,int right)
    {
        if(flag) return;
        if(i==10) {flag=true;return;}
    
        if(ball[i]>left)
            Dfs(i+1,ball[i],right);
        if(ball[i]>right)
            Dfs(i+1,left,ball[i]);
    }
    
    int main()
    {
        int t;
        while(scanf("%d",&t)==1)
        {
            while(t--){
                flag=false;
                for(int i=0;i<10;i++)
                    cin>>ball[i];
                Dfs(0,0,0);
                if(flag)
                    cout<<"YES"<<endl;
                else
                    cout<<"NO"<<endl;
            }
        }
        return 0;
    }
    

      

    2、

    #include"iostream"
    #include"stdio.h"
    using namespace std;
    
    int main()
    {
        int t;
        while(scanf("%d",&t)==1)
        {
            while(t--){
                int ball,left=0,right=0;
                bool flag=true;
                for(int i=0;i<10;i++)
                {
                    cin>>ball;
                    if(flag){
                        if(left>ball&&right>ball)
                        {
                            flag=false;
                        }
                        else if(left>ball)
                        {
                            right=ball;
                        }
                        else if(right>ball)
                        {
                            left=ball;
                        }
                        else
                        {
                            if(left>right)
                                left=ball;
                            else
                                right=ball;
                        }
                    }
                }
                if(flag)
                    cout<<"YES"<<endl;
                else
                    cout<<"NO"<<endl;
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    Qt生成随机数
    Qt调用系统DLL,判断网络连接状态
    Qt操作sqlite数据库
    Qt 操作注册表
    vs报错:RC1004 unexpected end of file found
    Qt操作ini文件
    Django Admin:自动选择当前用户
    BSTR转QString
    vue-cli4,vue3打包后页面无内容
    Qt 5.12.10 国际化
  • 原文地址:https://www.cnblogs.com/acm-jing/p/9550978.html
Copyright © 2011-2022 走看看