首页 > 编程 > Java > 正文

2016蓝桥杯A组java第三题

2019-11-08 03:08:19
字体:
来源:转载
供稿:网友
/** * @author Administrator *搭积木小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9。搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。最后搭成4层的金字塔形,必须用完所有的积木。下面是两种合格的搭法:   0  1 2 3 4 56 7 8 9   0  3 1 7 5 29 8 6 4    请你计算这样的搭法一共有多少种?768 */public class quanPaiLie {      public static int total = 0;      public static void swap(int[] str, int i, int j)      {          int temp ;          temp = str[i];          str[i] = str[j];          str[j] = temp;      }      public static void arrange (int[] str, int st, int len)      {          if (st == len - 1)          {      //全排列之后判断条件即可,因为只有10个数,全排列也很快,而且思路简单            if((str[1]>str[0])&&(str[2]>str[0])&&(str[3]>str[1])&&(str[4]>str[2]&&str[4]>str[1]&&(str[5]>str[2]                        &&(str[6]>str[3]))&&(str[7]>str[4])&&str[7]>str[3])&&(str[8]>str[4])&&str[8]>str[5]&&(str[9]>str[5])){                for (int i = 0; i < len; i ++)                      {             System.out.PRint(str[i]+ "  ");                }            System.out.println();              total++;              }          }          else          {              for (int i = st; i < len; i ++)              {                  swap(str, st, i);                  arrange(str, st + 1, len);                  swap(str, st, i);              }          }                }      /**      * @param args      */      public static void main(String[] args) {          // TODO Auto-generated method stub           int str[] = {0,1,2,3,4,5,6,7,8,9};           arrange(str, 0, str.length);           System.out.println(total);      }  }  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表