羊了个羊,自创题目

羊了个羊

题目背景

这是一只
123
这款游戏第一关十分简单,第二关十分煎蛋
123

题目描述

游戏规则是:

1:消除所有卡牌获胜

2:一次只能消除最面上的牌

3:你有一个卡槽,只能存放7张牌

4:三张同样的牌存在卡槽中才能消除

5:一共有n层,你只能消除最上面的牌

你要判断你这可不可以获胜

输入格式

第一行输入 n,表示层数

接下来一行输入 x ,表示有几种不同的物品

接下来一行输入 m ,表示矩阵边长

接下来输入n个矩阵

输出格式

可以获胜输出Yes,不可以输出No

样例 #1

样例输入 #1

2
3
3
1 2 3
2 1 3
1 3 2
3 1 2
2 1 3
1 3 2

样例输出 #1

Yes

提示

n < 10,x < 10,3 > m < 10

我肝出来了一个错误代码:

#include<bits/stdc++.h>
#define For(i,a,b) for(int i = a;i < b;i++)
#define ll long long
#define ull unsigned long long
#define loop while(true)
#define Top 0
using namespace std;
bool over2(int f[])
{
	for(int i = 0;i < 11;i++)
		if(f[i] > 2) return true;
	return false;
}
int n,m,x,a[11][11][11],card[8],idx = 0,f[11];
bool over()
{
	For(i,0,11)
		For(j,0,11)
			For(k,0,11)
				if(a[i][j][k] != -1)
					return false;
	return true;
}
int main()
{
	scanf("%d%d%d",&n,&x,&m);
	for(int i = 0;i < n;i++)
		for(int j = 0;j < m;j++)
			for(int k = 0;k < m;k++)
				scanf("%d",&a[i][j][k]);
	while(over())
	{
		For(i,0,m)
			For(j,0,m)
				f[a[Top][i][j]]++;
		bool pass = over2(f);
		if(pass == false) cout<<"No"; 
		for(int i = 1;i < 11;i++)
		{
			if(f[i] >= 3)
			{
				int cnt = 0;
				for(int j = 0;j < m;j++)
					for(int k = 0;k < m;k++)
					{
						if(cnt == 3) goto jump_to_this;
						if(a[0][j][k] == i)
						{
							cnt++;
							a[0][j][k] = -1;
							for(int q = 0;q < 11;q++)
								swap(a[q][j][k],a[q+1][j][k]);
						}
					}
			}
			jump_to_this:
				continue;
		}
	}
	cout<<"Yes";
	return 0;
}

有什么想法可以留言,谢谢

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值