首页 > 试题广场 >

世博南美馆

[问答题]

世博南美馆

题目描述:世博会期间,小明计划玩一遍所有南美国家的国家馆。南美一共有10个国家,他们的国家馆一字排开分布在南美大道上,按顺序编号分别为0-9。

小明的游玩方案是这样的

如果玩的人太多,就把馆分成两批,分的方式是在相邻的某两个馆之间插一个牌子;

任选其中一批先玩,另一批以后玩;

如果一批馆还是玩不玩,则继续分为两批;

一批中的馆全部玩完之后,才能玩下一个批馆;

每批馆玩的时候,只能从这批当中编号最小的馆开始,按照相邻的编号逐个玩;

一天至少可以玩一个馆。

十个馆都玩完之后,小明拿出在十个馆盖章的册子,请你根据册子上盖章的顺序,判断小明是否遵守了自己的游玩方案。

输入

0-9十个数字的排列

输出

符合小明玩法的,输出yes,不符合的,输出no

样例输入

3287956401

4130279856

样例输出

yes

no

 #include <iostream>

using namespace std;

int fun1(int a[])
{
	int i = 1;
	while (i<10)
	{
		if (a[i] - a[i - 1]>1)
		{
			if ((i == 1) || (a[i - 1] > a[i - 2]))
			{
				int j = 0;
				int flag = a[i] - a[i - 1] - 1;
				int count = 0;
				while (j < i - 1)
				{
					if (a[j]<a[i] && a[j]>a[i - 1])
						count++;
					j++;
				}
				if (count != flag)
					return 0;
			}
		}
		i++;
	}
	return 1;
}
int main()
{
	int a[10];
	for (int i = 0; i < 10; i++)
		cin >> a[i];
	int res = fun1(a);
	if (res == 0)
	{
		cout << "no" << endl;
	}
	else
	{
		cout << "yes" << endl;
	}
	system("pause");
	return 0;
}
编辑于 2017-09-01 19:20:18 回复(3)
不知所谓。。
发表于 2017-08-24 03:11:28 回复(0)
语文还给老师系列,阅读理解不能
发表于 2018-03-21 11:26:00 回复(1)
拿出输入数字串的第一个数字,对后面的数字按与第一个数字大小的比较,顺序分成若干组(如354210就分成3 54 210),然后取最后一组,如果是比第一个数字小的,判断这个数字串最小的数是否在其中,如果不在返回no;如果是比第一个数字大的,判断这个数字串最大的数是否在其中,如果不在返回no;然后依次对个数大于3的分组进行递归,最后判断所有分组是否都执行完了,完了返回yes
发表于 2018-01-15 13:49:05 回复(0)
挨踢小子: 题意:①每一批,结束后,才可以玩下一批 ②每一批,都必须从编号最小的开始 提示:首先观察,最后一个数字,比如样例一中,顺序连号01 ,以及56,最后的数字,和连号数字,就是突破点,其次,可以想象,连号数字之间被颠倒顺序的之间,必然插有标记。 结果:如楼上所示,01①2③3②4⑦56④7⑥8⑤9
发表于 2017-08-12 00:14:07 回复(1)
小明****啊,同感的点个赞
发表于 2017-08-02 10:17:54 回复(2)
发表于 2018-07-05 22:39:42 回复(0)
小明*****
发表于 2018-05-28 08:56:33 回复(0)
llll
发表于 2018-04-26 12:07:14 回复(0)
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
发表于 2017-11-09 03:24:03 回复(0)
解决了
发表于 2017-10-18 17:06:28 回复(0)
我就想看还有什么样的题
发表于 2017-09-22 18:13:02 回复(0)
8532148695
发表于 2017-08-30 12:47:18 回复(0)

搞不懂小明的玩法,相邻的两个我馆之间插个旗子,任选一批进行游玩?那这一批是怎么选出来的。。。瞎选还是看心情

发表于 2017-08-04 14:45:58 回复(0)
0 1 2 3 4 5 6 7 8 9我每个中间插旗子,可以吗,那我就可以 对这十个数排列,。?感觉不会有no的组合啊
发表于 2017-08-02 23:57:54 回复(0)
一脸茫然
发表于 2017-08-02 17:18:33 回复(0)
样例1:3287956401
可以这样划分01234⑦56④7⑥8⑤9
圈中的数表示划分的优先级,①就是第一次划分。

我暂时想到一种解法。
我的方法是用dp[i][j]表示从下标i到下标j的位置,是否能够通过合法的游玩方案产生,显然初始值是对于所有dp[i][i]=true。dp[i][j]=true的条件是i到j区间出现了一段连续的自然数并且存在一个k使得dp[i][k]==true&&dp[k+1][j]==true。口胡的一个做法不知道对不对……

编辑于 2017-08-02 20:26:59 回复(2)
没看懂小明是怎么划分的
发表于 2017-08-01 16:01:34 回复(0)