蓝桥杯——历届真题 搭积木 【第七届】【省赛】【C组】
【摘要】 问题说明:小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9。搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。最后搭成4层的金字塔形,必须用完所有的积木。下面是两种合格的搭法: 0 1 2 3 4 56 7 8 9 0 3 1 7 5 29 8 6 4 请你计算这样的搭法一共有多少种?请填表示总数目的数字。注意:你提交的应该是...
问题说明:
小明最近喜欢搭数字积木,
一共有10块积木,每个积木上有一个数字,0~9。
搭积木规则:
每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。
最后搭成4层的金字塔形,必须用完所有的积木。
下面是两种合格的搭法:
0
1 2
3 4 5
6 7 8 9
0
3 1
7 5 2
9 8 6 4
请你计算这样的搭法一共有多少种?
请填表示总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
解题思路:
根据题意可以知道,积木的顶端一定是0,我们只需要把剩余的1-9排列一下,再用一个变量计次就可以了。
0
a b
c d e
f g h i
可以参考这个积木来规划代码。
程序代码:
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int count=0;
for (int a = 1; a <=9; a++) {
for (int b = 1; b <=9; b++) {
for (int c = 1; c <=9; c++) {
for (int d = 1; d <=9; d++) {
for (int e = 1; e <=9; e++) {
for (int f = 1; f <=9; f++) {
for (int g = 1; g <=9; g++) {
for (int h = 1; h <=9; h++) {
for (int i = 1; i <=9; i++) {
if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i&&
b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i&&
c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=i&&
d!=e&&d!=f&&d!=g&&d!=h&&d!=i&&
e!=f&&e!=g&&e!=h&&e!=i&&
f!=g&&f!=h&&f!=i&&
g!=h&&g!=i&&
h!=i) {
if (c>a&&d>a&&d>b&&e>b&&f>c&&g>c&&g>d&&h>d&&h>e&&i>e) {
count++;
}
}
}
}
}
}
}
}
}
}
}
System.out.println(count);
}
}
代码解析:
因为1-9直接不能重复所以要在for循环之间添加一个if判断来筛选除重复的数字;
然后根据上面规划的积木来写外侧if的判断条件即可。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)