您的位置:首页 > 其它

[DFS] AOJ 0033 Ball

2015-07-20 21:16 519 查看
AOJ 0033  http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0033



题意:(见图)有一个形似央视大楼的筒,从A口可以放球,放进去的球可通过挡板DE使其掉进B裤管或C裤管里,现有带1-10标号的球按给定顺序从A口放入,问是否有一种控制挡板的策略可以使B裤管和C裤管中的球从下往上标号递增。 输入:第一行输入数据组数N。接下来N行为N组具体数据,每组数据中有10个整数,代表球的放入顺序。输出:对于每组数据,若策略存在,输出YES;若不存在,输出NO。

没什么好说的。。基础dfs

#include<iostream>
#include<memory.h>
using namespace std;
int arr[10],used[10];
void DFS(int pre,int cur)
{
if(cur<10&&arr[pre]<arr[cur])
{
used[cur]=1;
DFS(cur,cur+1);
}
else if(cur<10&&arr[pre]>=arr[cur])
DFS(pre,cur+1);
}
int main()
{
int T,pre;
bool judge;
cin>>T;
while(T--)
{
for(int i=0;i<10;i++)
cin>>arr[i];
for(int i=0;i<10;i++)
{
memset(used,0,sizeof(used));
used[i]=1;
DFS(i,i+1);
judge=false;
pre=0;
for(int j=0;j<10;j++)
if(used[j]==0)
if(pre>=arr[j])
{
judge=true;
break;
}else pre=arr[j];
if(!judge)
{
cout<<"YES"<<endl;
break;
}
}
if(judge)cout<<"NO"<<endl;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: