美文网首页
AIZU-0033 Ball

AIZU-0033 Ball

作者: JeremyChan | 来源:发表于2017-03-14 23:30 被阅读84次

    AIZU-0033 Ball

    Q:有一个形似央视大楼(Orz)的筒,从A口可以放球,放进去的球可通过挡板DE使其掉进B裤管或C裤管里,现有带1-10标号的球按给定顺序从A口放入,问是否有一种控制挡板的策略可以使B裤管和C裤管中的球从下往上标号递增。

    输入:第一行输入数据组数N。接下来N行为N组具体数据,每组数据中有10个整数,代表球的放入顺序。 
    输出:对于每组数据,若策略存在,输出YES;若不存在,输出NO 
    
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    void DFS(int* arr, int pos, int* res, int index, bool& flag) {
        if (pos >= 10||flag)          //数组出界或者找到满足条件时返回
        {
            return;
        }
        if ((index==0) || (index >= 1 && res[index - 1] < arr[pos]))   //将A数组中的最后一个元素与源数组的pos元素比较
        {                                                              //如果小于,则加入A数组,否则加入B数组
            res[index] = arr[pos];
            arr[pos] = 0;
        }
        DFS(arr, pos+1, res, index+1, flag);                          //递归查找后面的元素
        if (flag)
        {
            return;
        }
        int pre = 0;                                                  //A数组肯定是有序的,判断B数组是否有序?
        int cur = 0;                                                  //就可以得到是否满足条件
        flag = true;                    
        for (int i = 0; i < 10; i++)
        {
            if (arr[i]!=0)
            {
                pre = pre == 0 ? arr[i] : cur;
                cur = arr[i];
                if (cur < pre)
                {
                    flag = false;
                    break;
                }
            }
        }
    }
    
    int main()
    {
        int N, arr[11], res[10];
        cin >> N;
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                cin >> arr[j];
            }
            bool flag = false;
            DFS(arr, 0, res, 0, flag);
            if (flag)
            {
                cout << "YES" << endl;
            }
            else
            {
                cout << "NO" << endl;
            }
        }
        system("pause");
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:AIZU-0033 Ball

          本文链接:https://www.haomeiwen.com/subject/fouknttx.html