A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-张化 中级黑马   /  2012-9-18 12:22  /  1942 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马-张化 于 2012-9-18 12:24 编辑

0到9之间10个数字、可以组合多少个10位数、求代码、(要求列出这些数字、这些十位数没有重复的、)、

8 个回复

倒序浏览
吕书凯 发表于 2012-9-18 12:35
没看明白呢?
从10数到99不就得了?

不是这个意思、我的意思是说 0 1 2 3 4 5 6 7 8 9 这十个数字、排列成十位数、要求把所有的十位数打印出来
比如说:7348150926 、 6754039821        ........
回复 使用道具 举报
本帖最后由 舒远 于 2012-9-18 13:24 编辑
  1. public class PaiLie{
  2.         
  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 char[] b = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
  8.                 perm(b, 0);
  9.                
  10.         }
  11.         
  12.         static void swapArrayElements(char a[], int lhs, int rhs) {
  13.                 char temp = a[lhs];
  14.                 a[lhs] = a[rhs];
  15.                 a[rhs] = temp;
  16.         }
  17.         
  18.         /**
  19.          * 字符数组全排列
  20.          *
  21.          * @param a
  22.          * @param start
  23.          * @param set
  24.          */
  25.         static void perm(char a[], int start) {
  26.                 if (start == a.length - 1) {
  27.                         // 输出排列结果
  28.                         //set.add(new String(a));
  29.                         System.out.println(new String(a));
  30.                         return;
  31.                 }
  32.                 else {
  33.                         for (int i = start; i <= a.length - 1; i++) {
  34.                                 // 将数组片段的各元素与首元素交换
  35.                                 swapArrayElements(a, start, i);
  36.                                 // 对交换后的,去掉首元素的数组片段进行全排列
  37.                                 perm(a, start + 1);
  38.                                 // 交换回来
  39.                                 swapArrayElements(a, start, i);
  40.                         }
  41.                 }
  42.         }
  43. }
复制代码
你可以打印一下试试,jvm会运行很长一段时间,统计了一下,一共有3628800个这样的数字
回复 使用道具 举报
舒远 发表于 2012-9-18 13:09
你可以打印一下试试,jvm会运行很长一段时间

第一位可以是0么?
回复 使用道具 举报
hqucsx 发表于 2012-9-18 13:14
第一位可以是0么?

转化为long就行了。整数开头当然不能为零
回复 使用道具 举报
本帖最后由 严海荣 于 2012-9-18 13:55 编辑
  1. public class Demo3 {
  2.         public static void main(String[] args)
  3.         {
  4.                 show();
  5.         }
  6.         
  7.         private static void show()
  8.         {
  9.                
  10.                 int[] arr = {0,1,2,3,4,5,6,7,8,9};
  11.                 for(int a=1;a<arr.length;a++)
  12.                 {        
  13.                 for(int b=0;b<arr.length;b++)
  14.                 {
  15.                    if(b!=a)
  16.                 {
  17.                 for(int c=0;c<arr.length;c++)
  18.                 {
  19.                    if(c!=a&&c!=b)
  20.                 {
  21.                 for(int d=0;d<arr.length;d++)
  22.                 {
  23.                    if(d!=a&&d!=b&&d!=c)
  24.                 {
  25.                 for(int e=0;e<arr.length;e++)
  26.                 {
  27.                    if(e!=a&&e!=b&&e!=c&&e!=d)
  28.                 for(int f=0;f<arr.length;f++)
  29.                 {
  30.                    if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e)
  31.                 {
  32.                 for(int g=0;g<arr.length;g++)
  33.                 {
  34.                    if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f)
  35.                 {
  36.                 for(int h=0;h<arr.length;h++)
  37.                 {
  38.                    if(h!=a&&h!=b&&h!=c&&h!=d&&h!=e&&h!=f&&h!=g)
  39.                 {
  40.                 for(int i=0;i<arr.length;i++)
  41.                 {
  42.                    if(i!=a&&i!=b&&i!=c&&i!=d&&i!=e&&i!=f&&i!=g&&i!=h)
  43.                 {
  44.                    for(int j=0;j<arr.length;j++)
  45.                 {
  46.                     if(j!=a&&j!=b&&j!=c&&j!=d&&j!=e&&j!=f&&j!=g&&j!=h&&j!=i)
  47.                 {
  48.                        System.out.print("十位数:"+a+b+c+d+e+f+g+h+i+j);
  49.                        System.out.println();
  50.                                                                                                                                                                                        
  51.                 }
  52.                 }
  53.                 }
  54.                 }
  55.                 }
  56.                 }
  57.                 }
  58.                 }
  59.                 }
  60.                 }
  61.                 }
  62.                 }
  63.                 }
  64.                 }
  65.                 }
  66.                 }
  67.                 }         
  68.                 }
  69.          
  70.         }
  71. }
复制代码
好吧,不要像我学习,做的太没脑子了。
回复 使用道具 举报
我去都歪成这样了,复制代码放eclipse中还是能打印出来的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马