java算法

  1.  package t1;
  2. import java.io.*;//打印一个整数用小于等于他大于零的整数表示的所有表达
  3. import java.util.*;
  4. class Ghh 
  5. {
  6.  public static void main(String[] args)  throws Exception
  7.  {
  8. //  Scanner scanner = new Scanner(System.in);
  9. //  int k = scanner.nextInt();
  10.   int k = 8;
  11.   String a = "";
  12.   ghh(k,0,a);
  13.  }
  14. static public void ghh(int m,int n,String a)
  15.  {
  16.   int i;
  17.   String b = a;
  18.   System.out.println(m + "  " + n + "  " + a );
  19.   if (n == 0){
  20.    i = 1;
  21.   }
  22.   else{
  23.    i = n;
  24.   } 
  25.   for ( ; i <= (m + 1)/2; i++  ) {
  26.    if (m >= 2*i){
  27.     if (n != 0){
  28.      b = (new Integer(n)).toString() + "  " + a ;
  29.     }
  30.     ghh(m - i, i ,b);}
  31.     } 
  32.   }
  33.  }
  34. class Number1to9 
  35. {
  36.  public static void main(String[] args) 
  37.  {
  38.   int [] num = new int[9];
  39.   int [][] n3 = new int[100][];
  40.   int [][] n2 = new int[30][];
  41.   int [] n4 = new int[3];
  42.   int m;
  43.   int t;
  44.   int k2 = 0;
  45.   int k3 = 0;
  46.   int nu4;
  47.   int nu3;
  48.   int nu2;
  49.   for (int i = 1; i <= 9; i++)
  50.   {
  51.    for (int j = i + 1; j <= 9; j++)
  52.    {
  53.     m = i * j;
  54.     if (m < 10)
  55.     {
  56.      n2[k2++] = new int[]{i,j};
  57.      n2[k2++] = new int[]{j,i};
  58.     }
  59.     t = m % 10;
  60.     if (t != 0 && t != i && t != j)
  61.     {
  62.      n3[k3++] = new int[]{i,j,t};
  63.      n3[k3++] = new int[]{j,i,t};
  64.     }
  65.    }
  66.   }
  67.   k2 = k2 - 1;
  68.   k3 = k3 -1;
  69.   for (int x = k2; x >= 0 ; x-- )
  70.   {
  71.    int k2_1 = n2[x][0];  
  72.    int k2_2 = n2[x][1];
  73.    for (int y = k3; y >= 0 ; y-- )
  74.    {
  75.     int k3_1 = n3[y][0];
  76.     int k3_2 = n3[y][1]; 
  77.     int k3_3 = n3[y][2];
  78.     if ((k3_1 != k2_1 && k3_2 != k2_2) &&(k3_1 != k2_2 && k3_2 != k2_1) &&(k2_1 != k3_3 && k2_2 != k3_3))
  79.     {
  80.      for (int q = 0;q < 9 ;q++ )
  81.      {
  82.       num = new int[]{0,0,0,0,0,0,0,0,0};
  83.       num[k2_1 - 1] = 1;
  84.       num[k2_2 -1] = 1;
  85.       num[k3_1 - 1] = 1;
  86.       num[k3_2 - 1] = 1;
  87.       num[k3_3 - 1] = 1;
  88.       if (num[q] != 1)
  89.       {
  90.        nu2 = k2_1 * 10 + k3_1;
  91.        nu3 = k2_2 * 100 + (q + 1) * 10 + k3_2; 
  92.        nu4 = nu2 * nu3;
  93.        if (nu4 < 10000 && nu4 % 10 == k3_3)
  94.        {
  95.         num[q] = 1;
  96.         n4[0] = (nu4 / 10) % 10;
  97.         if (n4[0] != 0 && num[n4[0] - 1] != 1)
  98.         {
  99.          num[n4[0] - 1] = 1;
  100.         }
  101.         else continue;
  102.         n4[1] = (nu4 / 100) % 10;
  103.         if (n4[1] != 0 && num[n4[1] - 1] != 1)
  104.         {
  105.          num[n4[1] - 1] = 1;
  106.         }
  107.         else continue;
  108.         n4[2] = (nu4 /1000);
  109.         if (n4[2] != 0 && num [n4[2] - 1] != 1)
  110.         {
  111.          num [n4[2] - 1] = 1;
  112.         }
  113.         else continue;
  114.         System.out.println(nu2 + "----" + nu3 + "----" + nu4);
  115.        }
  116.       }
  117.      }
  118.     }
  119.    }
  120.   }
  121.  }
  122. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值