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

    科技2022-07-11  115

    问题描述

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

    搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。 最后搭成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

    Processed: 0.012, SQL: 8