您的位置:首页 > 大数据 > 人工智能

Aizu 0033 Ball(dfs,贪心)

2015-10-18 15:15 239 查看
日文题面...题意:是把一连串的有编号的球往左或者往右边放。问能不能两边都升序。

记录左边和右边最上面的球编号大小,没有就-1,dfs往能放的上面放。

#include<bits/stdc++.h>
using namespace std;

inline int read()
{
int ret; char c; while(c = getchar(),c<'0'||c>'9');
ret = c-'0';
while(c = getchar(),c>='0'&&c<='9') ret = ret*10 + c-'0';
return ret;
}

int reads()
{
int ret; char c; while(c = getchar(),c != '-' && c<'0'||c>'9');
bool Sign = c == '-';
ret = Sign?0:c-'0';
while(c = getchar(),c>='0'&&c<='9') ret = ret*10 + c-'0';
return Sign?-ret:ret;
}

int a[11];

bool dfs(int i = 0,int lsl = -1,int lsr = -1)
{
if(i == 10) return true;
return ( (!~lsl || a[i] > a[lsl]) && dfs(i+1,i,lsr) )||( (!~lsr || a[i] > a[lsr]) && dfs(i+1,lsl,i) );
}

//#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int T = read();
while(T--){
for(int i = 0; i < 10; i++) a[i] = read();
puts(dfs()?"YES":"NO");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: