蓝桥杯真题 搭积木 小明最近喜欢搭数字积木。一共有10块积木,每个积木上有一个数字,0~9。 搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。 最后搭成4层的金字塔形

该博客讨论了一个关于数字积木的排列问题。小明使用0到9的数字积木,按照特定规则搭建4层金字塔,每层的数字必须小于下一层。题目给出两种合格的搭法示例,并提供了一段C++代码来计算所有可能的合法搭法总数,得出答案为768种。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

小明最近喜欢搭数字积木。一共有10块积木,每个积木上有一个数字,0~9。

搭积木规则:
每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。
最后搭成4层的金字塔形,必须用完所有的积木。

下面是两种合格的搭法:

01 23 4 56 7 8 9

03 17 5 29 8 6 4

请你计算这样的搭法一共有多少种?
输入
没有输入
输出
一个整数

思路:

水题,先利用全排列模板生成0-9这十个数的全排列然后再进行判断就行了。

代码:

#include <algorithm>
#include<stdio.h> 
using namespace std;

int num=0;
void process(int *a)
{
	if(a[0]<a[1] && a[0]<a[2] && a[1]<a[3] && a[1]<a[4] && a[2]<a[4]&&a[2]<a[5]&&a[3]<a[6]&&a[3]<a[7]
	&&a[4]<a[7]&&a[4]<a[8]&&a[5]<a[8]&&a[5]<a[9])
		num++;
}
int main ()
{
	int a[]={0,1,2,3,4,5,6,7,8,9};
	int n=10;
	
	do
	{
		process(a);
	}while(next_permutation(a,a+n));
	printf("%d",num);
	return 0;
} 

答案:768

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值