蓝桥杯题目练习 基础篇 [蓝桥杯2015决赛]方格填数

方格填数

题目描述

在2行5列的格子中填入1到10的数字。
要求:相邻的格子中的数,右边的大于左边的,下边的大于上边的。
如下图所示的2种,就是合格的填法。
请你计算一共有多少种可能的方案。

输出

请输出该整数,不要输出任何多余的内容

代码

暴力列举,终点在于10个数都不一样,循环时需要加条件判断。直接看代码。

#include <iostream>
using namespace std;


int main(){
	int x1,x2,x3,x4,x5;
	int y1,y2,y3,y4,y5;
	int a=0,b,c;
	int flag[11];
	for(int i=0;i<11;i++)
		flag[i]=0;
	for( x1=1;x1<=10;x1++){
		flag[x1]=1; 
		for(x2=x1+1;x2<=10;x2++){
			if(flag[x2]==1) continue;
			else flag[x2]=1;
			for( x3=x2+1;x3<=10;x3++){
				if(flag[x3]==1) continue;
				else flag[x3]=1;
				for(x4=x3+1;x4<=10;x4++){
					if(flag[x4]==1) continue;
					else flag[x4]=1;
					for(x5=x4+1;x5<=10;x5++){
						if(flag[x5]==1) continue;
						else flag[x5]=1;
						for(y1=1;y1<=10;y1++){
							if(flag[y1]==1) continue;
							else flag[y1]=1;
							for(y2=y1+1;y2<=10;y2++){
								if(flag[y2]==1) continue;
								else flag[y2]=1;
								for(y3=y2+1;y3<=10;y3++){
									if(flag[y3]==1) continue;
									else flag[y3]=1;
									for(y4=y3+1;y4<=10;y4++){
										if(flag[y4]==1) continue;
										else flag[y4]=1;
										for(y5=y4+1;y5<=10;y5++){
											if(flag[y5]==1) continue;
											else flag[y5]=1;
											if(x1<y1&&x2<y2&&x3<y3&&x4<y4&&x5<y5) {
												a++;
											}
											flag[y5]=0;
										}
										flag[y4]=0;
									}
									flag[y3]=0;
								}
								flag[y2]=0;
							}
							flag[y1]=0;
						}
						flag[x5]=0;
					}
					flag[x4]=0;
				}
				flag[x3]=0;
			}
			flag[x2]=0;
		}
		flag[x1]=0;
	}
	cout<<a;					
	return 0;
}

答案是42.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值