1.用1,2,2,3,4,5,这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234,412345等,要求:“4”不能排第3位,“1”与“5”不能相连。
2.数字a=11,b=4,不用第3个变量怎样把啊a和b的位置互换。

解决方案 »

  1.   

    你的第二个题是:
    public class Sum
    {
     public static void main(String [] argv)
    {
     int a=11;
     int b=4;
     a=a+b;
     b=a-b;
     a=a-b;
    }
    }
      

  2.   

    public class Ab{
        public static void main(String[] args){
            int a=11;
            int b=4;
            System.out.println("a:"+a+"\nb:"+b);
            a=a+b;
            b=a-b;
            a=a-b;
            System.out.println("互换后为:");
            System.out.println("a:"+a+"\nb:"+b);
        }
    }
      

  3.   

    2题: 
    a = a + b ;
    b = a - b ;
    a = a - b ;
      

  4.   

    前面的第2题怎么都一个样,我给个:
    public static void main(String[] args) throws IOException{
    int a = 11;
    int b = 8;
    a = a^b;
    b=a^b;
    a=a^b;
    System.out.println(a);
    System.out.println(b);
    }
      

  5.   

    Rick_ang(东方未名)兄才智过人,在下佩服。wsnyyxxxooo(张鹏)豆子你XXOO干什么?
      

  6.   

    a = a^b;
    b=a^b;
    a=a^b;
      

  7.   

    只有198个?????
    package awu.com;public class C {
    public static void main(String []args)
    {
    int a[]={1,2,2,4,5,6};
    int i,j,k,l,m,n;
    int count = 0;
    for(i=0;i<a.length;i++)
    {
    for(j=0;j<a.length;j++)
    {
    for(k=0;k<a.length;k++)
    {
    for(l=0;l<a.length;l++)
    {
    for(m=0;m<a.length;m++)
    {
    for(n=0;n<a.length;n++)
    {
    if( a[k] ==4 || a[i]==1&&a[j]==5 || a[j]==1&&a[k]==5|| a[k]==1&&a[l]==5|| a[l]==1&&a[m]==5|| a[m]==1&&a[n]==5)
    {
    continue;
    }
    else
    {
    count++;
    System.out.println(a[i]+""+a[j]+""+a[k]+""+a[l]+""+a[m]+""+a[n]);
    }
    }
    }
    }
    }
    }

    }
    System.out.println(count);
    }
    }
      

  8.   

    package awu.com;public class C {
    public static void main(String []args)
    {
    int a[]={1,2,2,4,5,6};
    int i,j,k,l,m,n;
    int count = 0;
    for(i=0;i<a.length;i++)
    {
       for(j=0;j<a.length;j++)
       {
    for(k=0;k<a.length;k++)
    {
       for(l=0;l<a.length;l++)
        {
          for(m=0;m<a.length;m++)
           {
    for(n=0;n<a.length;n++)
      {
    if( a[k] ==4 ||             //第三们不能为4
                                              a[i]==1 && a[j]==5 ||  //一二位不能15
                                              a[j]==1 && a[k]==5 ||   //二三位不能15
                                              a[k]==1 && a[l]==5 ||   //三四位不能15
                                              a[l]==1 && a[m]==5 ||   //四五位不能15
                                              a[m]==1 && a[n]==5)     //五六位不能15
                                         {continue; }
    else
     { count++;      //计数
     System.out.println(a[i]+""+a[j]+""+a[k]+""+a[l]+""+a[m]+""+a[n]);}//打印这些可能的数
                 }
    }
          }
     }
          }
        }
         System.out.println(count);
       }
    }
      

  9.   

    AWUSOFT()
     
    好像不对吧
    你的算法里面没有去掉数字重复的
    例如:111111……
      

  10.   

    if( i!=j && i!=k && i!=l&& i!=m && i!=n
    && j!=k && j!=l && j!=m &&j!=n
    && k!=l && k!=m && k!=n
    && l!=m && l!=n
    && m!=n)在最里边的循环加上这个条件,可是结果是498啊,帮忙看看哪个数字不要求的
      

  11.   

    to:AWUSOFT()1和5不相连,也不能出现51阿!不光是15
      

  12.   

    那问题还不是很容易解决...
    a[i]==1 && a[j]==5 ||  //一二位不能15
    a[j]==1 && a[k]==5 ||   //二三位不能15
     a[k]==1 && a[l]==5 ||   //三四位不能15
     a[l]==1 && a[m]==5 ||   //四五位不能15
    a[m]==1 && a[n]==5把1,5换位置再加进去
      

  13.   

    又变成396了
    a[i]==1 && a[j]==5 || 
    a[j]==1 && a[k]==5 || 
    a[k]==1 && a[l]==5 || 
    a[l]==1 && a[m]==5 || 
    a[m]==1 && a[n]==5 || 
    a[i]==5 && a[j]==1 || 
    a[j]==5 && a[k]==1 || 
    a[k]==5 && a[l]==1 || 
    a[l]==5 && a[m]==1 || 
    a[m]==5 && a[n]==1有没有办法简化一下呢?
      

  14.   

    拿六组数字出来
    1,2,2,3,4,5      i
    1,2,2,3,4,5      j
    1,2,2,3,4,5      k
    1,2,2,3,4,5      l
    1,2,2,3,4,5      m
    1,2,2,3,4,5      n
    从每次从一个组里取一个数出来,这样就能组成六位了,而且保证全是里边的数
    也应该注意位置问题,第一组的放在第一位,第二组的放在第二位........
    然后就确定条件,首先第一与第二位不能都取相同位置上的数,第一与第三也是一样,所以就有了这样的条件
       i!=j && i!=k && i!=l&& i!=m && i!=n
    && j!=k && j!=l && j!=m &&j!=n
    && k!=l && k!=m && k!=n
    && l!=m && l!=n
    && m!=n
    然后就是第三位也就是k位不能是4所以有a[k] !=4
    1,2位不能是5,所以a[i]a[j]不能是15.
    以此类推...
      

  15.   

    晕哦,这样就能保证相邻的两们不是15或者51
    if( a[k] ==4 || 
    a[i]*a[j]==5 || 
    a[j]*a[k]==5 || 
    a[k]*a[l]==5 || 
    a[l]*a[m]==5 || 
    a[m]*a[n]==5
    )
      

  16.   

    期待Qim(莫名-想星星)的正则表达式算法......
      

  17.   

    第二题的最优答案是:
      b=a+(a=b)*0 测试的运行结果是占11个字节
     而
       a = a^b;
       b=a^b;
       a=a^b;  测试的运行结果是占13个字节
            csdn上有人测试过的,以前也出现过
     
    class aa{
     public static void main(String args[])
     {
       int a,b;
       a=10;
       b=8;
       System.out.println("交换之前的a与b是:"+a+","+b);
       b=a+(a=b)*0; //a与b的交换
       System.out.println("交换之后的a与b是:"+a+","+b);
     }
    运行答案是:交换之前的a与b是:10,8
               交换之前的a与b是:8,10
      

  18.   

    class Class1
    {
    private static int ans =0;
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    //
    Perm(new int[]{1,2,2,3,4,5},0,5);
    Console.WriteLine(ans.ToString());
    } private static void Perm(int[] list,int k,int m)
    {
    if(k==m)
    {
    if(list[2] != 4)
    {
    ans ++;
    for(int i=0;i<=m;i++)
    Console.Write(list[i].ToString());
    Console.Write("\t");
    }
    }
    else
    {
    for(int i = k;i<=m;i++)
    if(NoRepeat(list,k,i))
    {
    Swap(list,k,i);
    Perm(list,k+1,m);
    Swap(list,k,i);
    }
    }
    } private static void Swap( int[] list,int k,int i)
    {
    int temp = list[k];
    list[k] = list[i];
    list[i] = temp;
    } private static bool NoRepeat(int[] list,int k,int i)
    {
    if(i>k)
    for(int t = k;t<i;t++)
    {
    if(list[t] == list[i])
    return false;
    }
    return true;
    } }
      

  19.   

    你的第二个题是:
    public class Sum
    {
     public static void main(String [] argv)
    {
     int a=11;
     int b=4;
     a=a+b;
     b=a-b;
     a=a-b;
    }
    }
    英雄所见略同
      

  20.   

    private static void Perm(int[] list,int k,int m)
    {
       if(k==m)
       {
           if(list[2] != 4)
           {
    ans ++;
    for(int i=0;i<=m;i++)
    Console.Write(list[i].ToString());
    Console.Write("\t");
            }
       }
       else
       {
          for(int i = k;i<=m;i++)
    if(NoRepeat(list,k,i))
    {
       Swap(list,k,i);
       Perm(list,k+1,m);
       Swap(list,k,i);
    }
        }
    }//交换
    private static void Swap( int[] list,int k,int i)
    {
       int temp = list[k];
       list[k] = list[i];
       list[i] = temp;
    }
    //判断重复项
    private static bool NoRepeat(int[] list,int k,int i)
    {
       if(i>k)
       for(int t = k;t<i;t++)
      {
         if(list[t] == list[i])
            return false;
      }
    return true;
    }
      

  21.   

    Perm()是递归函数 初始化调用Perm(new int[]{1,2,2,3,4,5},0,5)就ok了
      

  22.   

    1: 1 2 2 3 4 5
    2: 1 2 2 3 5 4
    3: 1 2 2 4 3 5
    4: 1 2 2 4 5 3
    5: 1 2 2 5 3 4
    6: 1 2 2 5 4 3
    7: 1 2 3 2 4 5
    8: 1 2 3 2 5 4
    9: 1 2 3 4 2 5
    10: 1 2 3 4 5 2
    11: 1 2 3 5 2 4
    12: 1 2 3 5 4 2
    13: 1 2 5 2 3 4
    14: 1 2 5 2 4 3
    15: 1 2 5 3 2 4
    16: 1 2 5 3 4 2
    17: 1 2 5 4 2 3
    18: 1 2 5 4 3 2
    19: 1 3 2 2 4 5
    20: 1 3 2 2 5 4
    21: 1 3 2 4 2 5
    22: 1 3 2 4 5 2
    23: 1 3 2 5 2 4
    24: 1 3 2 5 4 2
    25: 1 3 5 2 2 4
    26: 1 3 5 2 4 2
    27: 1 3 5 4 2 2
    28: 1 4 2 2 3 5
    29: 1 4 2 2 5 3
    30: 1 4 2 3 2 5
    31: 1 4 2 3 5 2
    32: 1 4 2 5 2 3
    33: 1 4 2 5 3 2
    34: 1 4 3 2 2 5
    35: 1 4 3 2 5 2
    36: 1 4 3 5 2 2
    37: 1 4 5 2 2 3
    38: 1 4 5 2 3 2
    39: 1 4 5 3 2 2
    40: 2 1 2 3 4 5
    41: 2 1 2 3 5 4
    42: 2 1 2 4 3 5
    43: 2 1 2 4 5 3
    44: 2 1 2 5 3 4
    45: 2 1 2 5 4 3
    46: 2 1 3 2 4 5
    47: 2 1 3 2 5 4
    48: 2 1 3 4 2 5
    49: 2 1 3 4 5 2
    50: 2 1 3 5 2 4
    51: 2 1 3 5 4 2
    52: 2 2 1 3 4 5
    53: 2 2 1 3 5 4
    54: 2 2 1 4 3 5
    55: 2 2 1 4 5 3
    56: 2 2 3 1 4 5
    57: 2 2 3 5 4 1
    58: 2 2 5 3 1 4
    59: 2 2 5 3 4 1
    60: 2 2 5 4 1 3
    61: 2 2 5 4 3 1
    62: 2 3 1 2 4 5
    63: 2 3 1 2 5 4
    64: 2 3 1 4 2 5
    65: 2 3 1 4 5 2
    66: 2 3 2 1 4 5
    67: 2 3 2 5 4 1
    68: 2 3 5 2 1 4
    69: 2 3 5 2 4 1
    70: 2 3 5 4 1 2
    71: 2 3 5 4 2 1
    72: 2 4 1 2 3 5
    73: 2 4 1 2 5 3
    74: 2 4 1 3 2 5
    75: 2 4 1 3 5 2
    76: 2 4 2 1 3 5
    77: 2 4 2 5 3 1
    78: 2 4 3 1 2 5
    79: 2 4 3 5 2 1
    80: 2 4 5 2 1 3
    81: 2 4 5 2 3 1
    82: 2 4 5 3 1 2
    83: 2 4 5 3 2 1
    84: 2 5 2 1 3 4
    85: 2 5 2 1 4 3
    86: 2 5 2 3 1 4
    87: 2 5 2 3 4 1
    88: 2 5 2 4 1 3
    89: 2 5 2 4 3 1
    90: 2 5 3 1 2 4
    91: 2 5 3 1 4 2
    92: 2 5 3 2 1 4
    93: 2 5 3 2 4 1
    94: 2 5 3 4 1 2
    95: 2 5 3 4 2 1
    96: 3 1 2 2 4 5
    97: 3 1 2 2 5 4
    98: 3 1 2 4 2 5
    99: 3 1 2 4 5 2
    100: 3 1 2 5 2 4
    101: 3 1 2 5 4 2
    102: 3 2 1 2 4 5
    103: 3 2 1 2 5 4
    104: 3 2 1 4 2 5
    105: 3 2 1 4 5 2
    106: 3 2 2 1 4 5
    107: 3 2 2 5 4 1
    108: 3 2 5 2 1 4
    109: 3 2 5 2 4 1
    110: 3 2 5 4 1 2
    111: 3 2 5 4 2 1
    112: 3 4 1 2 2 5
    113: 3 4 1 2 5 2
    114: 3 4 2 1 2 5
    115: 3 4 2 5 2 1
    116: 3 4 5 2 1 2
    117: 3 4 5 2 2 1
    118: 3 5 2 1 2 4
    119: 3 5 2 1 4 2
    120: 3 5 2 2 1 4
    121: 3 5 2 2 4 1
    122: 3 5 2 4 1 2
    123: 3 5 2 4 2 1
    124: 4 1 2 2 3 5
    125: 4 1 2 2 5 3
    126: 4 1 2 3 2 5
    127: 4 1 2 3 5 2
    128: 4 1 2 5 2 3
    129: 4 1 2 5 3 2
    130: 4 1 3 2 2 5
    131: 4 1 3 2 5 2
    132: 4 1 3 5 2 2
    133: 4 2 1 2 3 5
    134: 4 2 1 2 5 3
    135: 4 2 1 3 2 5
    136: 4 2 1 3 5 2
    137: 4 2 2 1 3 5
    138: 4 2 2 5 3 1
    139: 4 2 3 1 2 5
    140: 4 2 3 5 2 1
    141: 4 2 5 2 1 3
    142: 4 2 5 2 3 1
    143: 4 2 5 3 1 2
    144: 4 2 5 3 2 1
    145: 4 3 1 2 2 5
    146: 4 3 1 2 5 2
    147: 4 3 2 1 2 5
    148: 4 3 2 5 2 1
    149: 4 3 5 2 1 2
    150: 4 3 5 2 2 1
    151: 4 5 2 1 2 3
    152: 4 5 2 1 3 2
    153: 4 5 2 2 1 3
    154: 4 5 2 2 3 1
    155: 4 5 2 3 1 2
    156: 4 5 2 3 2 1
    157: 4 5 3 1 2 2
    158: 4 5 3 2 1 2
    159: 4 5 3 2 2 1
    160: 5 2 1 2 3 4
    161: 5 2 1 2 4 3
    162: 5 2 1 3 2 4
    163: 5 2 1 3 4 2
    164: 5 2 1 4 2 3
    165: 5 2 1 4 3 2
    166: 5 2 2 1 3 4
    167: 5 2 2 1 4 3
    168: 5 2 2 3 1 4
    169: 5 2 2 3 4 1
    170: 5 2 2 4 1 3
    171: 5 2 2 4 3 1
    172: 5 2 3 1 2 4
    173: 5 2 3 1 4 2
    174: 5 2 3 2 1 4
    175: 5 2 3 2 4 1
    176: 5 2 3 4 1 2
    177: 5 2 3 4 2 1
    178: 5 3 1 2 2 4
    179: 5 3 1 2 4 2
    180: 5 3 1 4 2 2
    181: 5 3 2 1 2 4
    182: 5 3 2 1 4 2
    183: 5 3 2 2 1 4
    184: 5 3 2 2 4 1
    185: 5 3 2 4 1 2
    186: 5 3 2 4 2 1
    187: 5 4 1 2 2 3
    188: 5 4 1 2 3 2
    189: 5 4 1 3 2 2
    190: 5 4 2 1 2 3
    191: 5 4 2 1 3 2
    192: 5 4 2 2 1 3
    193: 5 4 2 2 3 1
    194: 5 4 2 3 1 2
    195: 5 4 2 3 2 1
    196: 5 4 3 1 2 2
    197: 5 4 3 2 1 2
    198: 5 4 3 2 2 1
    Numbers:6 Sums:198 Times:47ms
      

  23.   

    p(6)/p2 - p(5)/p(2) - p(5)/p(2) - p(5)/p(2) + 3*p(3)/p(2)*2 = 198
    具体做法是按离散数学里的字典序不符合需求的去掉.
      

  24.   

    package com.andnnl.targetpractice;/**
     * 
     * 题目:1.用1,2,2,3,4,5,这六个数字,用java写一个main函数,
     * 打印出所有不同的排列,如:512234,412345等,
     * 要求:“4”不能排第3位,“1”与“5”不能相连。
     * 
     * 思想:
     * 把122345变为123456,求123456的排列组合,几个数字排成的行,每行不相同且每行都不存在相同的数字
     * 再按条件排除值就行了!
     * 
     * "4"不能排第3位:相当于"5"不能在第3"
     * "1"与"5"不能相连:相当于"1"与"6"不能相连
     * 还有一个重要的条件:就是有两个2,如果按照排列组合的话就会出现重复,必须排除掉,
     * 在出现3的同时又出现2就排除该组合就行了
     * 
     * @author Andnnl
     * 
     */
    public class Num122345 {
    private static int sum = 0; private static final int numbers = 6;// /**
     * 递归运算 一级一级向下判断,最高级为numbers,最后一级为0, 每向下一级都会用record数组来保存当前级的数字
     * 经过判断,到最后一级时,就打印该行
     * 
     * @param time
     *  当前循环的是第几次(numbers~0,为0时已经是递归到最后一级)
     * @param record
     *  保存每一次的值,传到下一级去判断(length=numbers)
     */
    public static void calculate(int time, int[] record) {
    /*
     * 判断是否存在相同的数字,(numbers - 1 - time)为record当前的值的索引号
     * 由当前索引号的值跟索引号前面的值比较,如果存在相同的值就退出,进行下一次递归
     */
    if (isExistSame(record, (numbers - 1 - time)))
    return; /*
     * 当前级数为0就打印该行,并累加总记录数
     */
    if (time == 0) {
    sum++;
    print(record);
    return;
    } /*
     * 当前级的值的设置
     */
    for (int i = 0; i < numbers; i++) {
    record[numbers - time] = i + 1;
    calculate(time - 1, record);
    } } /**
     * 判断是否存在相同的数字
     * 
     * @param record
     * @param t 当前索引号
     * @return
     */
    public static boolean isExistSame(int[] record, int t) {
    // "4"不能排第3位:相当于"5"不能在第3"
    if(t==2 && record[t]==5){
    return true;
    }
    for (int i = 0; i < t; i++) {
    //"1"与"5"不能相连:相当于"1"与"6"不能相连
    if((record[i]==1&&record[i+1]==6)||(record[i]==6&&record[i+1]==1))
    return true;
    //3的同时又出现2就排除该组合,把出现重复的值排除掉
    if((record[i]==2&&record[t]==3))
    return true;
    //排列组合,不能存在相同的值
    if ((record[t] == record[i]) )
    return true;

    }

    return false;
    } /**
     * 打印行
     * 
     * @param record
     */
    public static void print(int[] record) {
    String s = "";
    for (int i = 0; i <= numbers - 1; i++) {
    s += "" +
    "\t" + (record[i]>=3?record[i]-1:record[i]);
    // s += "\t" + record[i];
    } System.out.println(sum + ":" + s); } public static void main(String[] args) {
    int[] record = new int[numbers];// 保存当前级的数字
    long startTime = System.currentTimeMillis();
    // 进入递归
    calculate(numbers, record); long endTime = System.currentTimeMillis();
    long passTime = endTime - startTime; System.out.println("Numbers:" + numbers + "\tSums:" + sum + "\tTimes:"
    + passTime + "ms"); }
    }
      

  25.   

    利用递归,得到198个组合,程序如下:package test;
    public class ATest { private static boolean isLink(char a,char b){
    if(a=='1' && b=='5')return true;
    if(a=='5' && b=='1')return true;
    return false;
    }

    private static int num2(char[] num,int index){
    int n=0;
    for(int i=0;i<index;i++){
    if(num[i]=='2')n++;
    }
    return n;
    }

    private static boolean sameNumber(char[] num,int index,char a){
    for(int i=0;i<index;i++){
    if(num[i]==a)return true;
    }
    return false;
    }


    public static int testArrange(char[] number,char[] num,int index){
    int size = 0;//组合的个数
    int pos1=1,pos2=2;//该变量为重复的2的数组位置,可以提取出来作为参数
    int emp = num2(num,index);//得到当前的数组中有几个2
    for(int i=0;i<num.length;i++){
    if(number[i]=='2'){//当前的数字为2
    if(emp >= 2){//数组中2的个数多于2个
    continue;
    }else if(emp == 1){//数组中有一个2时,要求当前的2不能为位置1的2
    if(i==pos1)continue;
    }else{
    if(i==pos2)continue;//数组中没有2时,要求当前的2不能为位置2的2
    }
    }else{
    if(index==2 && number[i]=='4')continue;//去除4
    if(index>0 && isLink(num[index-1],number[i]))continue;//去除相邻的1和5
    if(sameNumber(num,index,number[i]))continue;//去除重复数字
    }
    num[index] = number[i];
    if(index==5){
    System.out.println(num);
    size++;
    }else{
    size = size + testArrange(number,num,index+1);
    }
    }
    return size;
    }

    public static void aTest(){
    char[] number = {'1','2','2','3','4','5'};
    char[] num = new char[number.length];
    int size =0;
    size = testArrange(number,num,0);
    System.out.println("size="+size);
    }

    public static void main(String[] args) {
    aTest();
    }}
    122345
    122354
    122435
    122453
    122534
    122543
    123245
    123254
    123425
    123452
    123524
    123542
    125234
    125243
    125324
    125342
    125423
    125432
    132245
    132254
    132425
    132452
    132524
    132542
    135224
    135242
    135422
    142235
    142253
    142325
    142352
    142523
    142532
    143225
    143252
    143522
    145223
    145232
    145322
    212345
    212354
    212435
    212453
    212534
    212543
    213245
    213254
    213425
    213452
    213524
    213542
    221345
    221354
    221435
    221453
    223145
    223541
    225314
    225341
    225413
    225431
    231245
    231254
    231425
    231452
    232145
    232541
    235214
    235241
    235412
    235421
    241235
    241253
    241325
    241352
    242135
    242531
    243125
    243521
    245213
    245231
    245312
    245321
    252134
    252143
    252314
    252341
    252413
    252431
    253124
    253142
    253214
    253241
    253412
    253421
    312245
    312254
    312425
    312452
    312524
    312542
    321245
    321254
    321425
    321452
    322145
    322541
    325214
    325241
    325412
    325421
    341225
    341252
    342125
    342521
    345212
    345221
    352124
    352142
    352214
    352241
    352412
    352421
    412235
    412253
    412325
    412352
    412523
    412532
    413225
    413252
    413522
    421235
    421253
    421325
    421352
    422135
    422531
    423125
    423521
    425213
    425231
    425312
    425321
    431225
    431252
    432125
    432521
    435212
    435221
    452123
    452132
    452213
    452231
    452312
    452321
    453122
    453212
    453221
    521234
    521243
    521324
    521342
    521423
    521432
    522134
    522143
    522314
    522341
    522413
    522431
    523124
    523142
    523214
    523241
    523412
    523421
    531224
    531242
    531422
    532124
    532142
    532214
    532241
    532412
    532421
    541223
    541232
    541322
    542123
    542132
    542213
    542231
    542312
    542321
    543122
    543212
    543221
    size=198
      

  26.   

    呵呵 我题目也看漏了没把1 和 5 相连的去掉
    Perm()是递归函数 初始化调用Perm(new int[]{1,2,2,3,4,5},0,5)就ok了private static void Perm(int[] list,int k,int m)
    {
       if(k==m)
       {
         //剔除1和5相连的
          for(int i = 0;i<=m;i++)
          {
    if(i!=m&&i!=0)
    {
       if(list[i]==1&&list[i+1]==5)
    return;
       if(list[i]==1&&list[i-1]==5)
    return;
    }
    else if(i==0)
    {
       if(list[i]==1&&list[i+1]==5)
    return;
    }
    else if(i==m)
    {
        if(list[i]==1&&list[i-1]==5)
    return;
             }
           }       if(list[2] != 4)
           {
    ans ++;
    for(int i=0;i<=m;i++)
    Console.Write(list[i].ToString());
    Console.Write("\t");
            }
       }
       else
       {
          for(int i = k;i<=m;i++)
    if(NoRepeat(list,k,i))
    {
       Swap(list,k,i);
       Perm(list,k+1,m);
       Swap(list,k,i);
    }
        }
    }//交换
    private static void Swap( int[] list,int k,int i)
    {
       int temp = list[k];
       list[k] = list[i];
       list[i] = temp;
    }
    //判断重复项
    private static bool NoRepeat(int[] list,int k,int i)
    {
       if(i>k)
       for(int t = k;t<i;t++)
      {
         if(list[t] == list[i])
            return false;
      }
    return true;
    }
      

  27.   

    第二題
    class t 
    {
    public static void main(String[] args) 
    {
    int a=11;
    int b=4;
    a=~a & 0x0f;
    b=~b & 0x0f;
    System.out.println("a="+a);
    System.out.println("b="+b);
    }
    }
      

  28.   

    package exchange;public class Exchange {    /**
         * 答案总结
         */
        public static void main(String[] args) {
            //int a=-1234567890,b=987654321;
            int a=11;
            int b=4;
                
    //        a=b|a&~(b=a);
            
            
    //        a=b|(b=a)&0;
            
            
    //        a^=b^(b^=a^b);//有0的情况下就错了
            
            
    //        a=a+b;
    //        b=a-b;
    //        a=a-b;
            
            
    //        a=a+b-(b=a);
            
            
    //        a=a-b;
    //        b=a+b;
    //        a=b-a;        
            
            
    //        a=b-(b=a)+a;
    //        b=a+(a=b)*0;//这个最好
            
            
            System.out.println("a:"+a+" b:"+b);
        }}
      

  29.   

    import java.util.Vector;
    public class ListSort
    {
        private static int cnt = 0;
        public ListSort()
        {
        }    public static void main(String args[]) throws Exception
        {
            Vector list = new Vector();
            list.add("1");
            list.add("2");
            list.add("2");
            list.add("3");
            list.add("4");
            list.add("5");
            sortlist( list,new Vector());
            System.out.println(cnt);
            System.out.println("there has two 2 ,every number will be repeated 2 times.so the last result = 396/2=198");
        }    private static void sortlist(Vector oldV, Vector newV) throws Exception
        {
            if (newV.size() == 6)
            {
                if(newV.get(2).toString().equalsIgnoreCase("4")){
                    return;
                }
                String s="";
                for(int j=0;j<newV.size(); j++){
                    s=s+newV.get(j).toString();
                }
                if (s.indexOf("51")!=-1 || s.indexOf("15")!=-1 )
                {
                    return;
                }
                System.out.println(s);
                cnt++;
                return;
            }
            for (int i = 0; i < oldV.size(); i++)
            {
                Vector old2V = new Vector();
                Vector new2V=new Vector();
                for(int j=0;j<oldV.size(); j++){
                    old2V.add(oldV.get(j));
                }
                for(int j=0;j<newV.size(); j++){
                    new2V.add(newV.get(j));
                }
                new2V.add(old2V.get(i));
                old2V.remove(i);
                sortlist(old2V, new2V);
            }
        }
    }
      

  30.   

    class t 
    {
    public static void main(String[] args) 
    {
    int[] a={1,2,2,3,4,5};
    String text="";
    String temp="";
    for(int i=0;i<6;i++){
    for(int j=0;j<6;j++){
    if(i==j){
    continue;
    }
    for(int k=0;k<6;k++){
    if(i==k || j==k || k==4){
    continue;
    }
    for(int m=0;m<6;m++){
    if(i==m || j==m || k==m){
    continue;
    }
    for(int n=0;n<6;n++){
    if(i==n || j==n || k==n || m==n){
    continue;
    }
    for(int p=0;p<6;p++){
    if(i==p || j==p || k==p || m==p || n==p){
    continue;
    }
    text = "" + a[i] + a[j] + a[k] + a[m] + a[n] + a[p];
    if(text.indexOf("15") !=-1 || text.indexOf("51") !=-1){
    continue;
    }
    if(temp.indexOf(text)==-1){
    System.out.println(text);

    }
    }
    }
    }
    }
    }
    }
    }
      

  31.   

    // 共198個
    public class Test { String token[] = { "1", "2", "2", "3", "4", "5" };
    int outQueue[] = { 0, 0, 0, 0, 0, 0 };
    boolean isSet[] = { false, false, false, false, false, false }; void SetOut(int pre, int pos) {
    if (pos >= outQueue.length) { // 輸出字串
    for (int i = 0; i < outQueue.length; i++)
    System.out.print(token[outQueue[i]]);
    System.out.println();
    return;
    } for (int i = 0; i < token.length; i++) {
    if (isSet[i] == true) // 略過己設定字元
    continue;
    if (pos == 2 && i == 4) // 「4」不能排第3位
    continue;
    if (pre == 0 && i == 5) // 「1」與「5」不能相連
    continue;
    if (pre == 5 && i == 0) // 「5」與「1」不能相連
    continue;
    if (i == 2 && isSet[1]) // 「2」與「2」重覆剔除
    continue;
    outQueue[pos] = i;
    isSet[i] = true; // lock
    SetOut(i, pos + 1); // 設定下一個字元
    isSet[i] = false; // unlock
    }
    } public static void main(String args[]) {
    new Test().SetOut(-1, 0);
    }
    }
      

  32.   

    function AAA()
    {
    var str='';
    var num=0;
    for(var a1=1;a1<6;a1++)
    {
    for(var a2=1;a2<6;a2++)
    {
    if(a1==1 && a2==5){continue;}
    if(a1==5 && a2==1){continue ;}
    for(var a3=1;a3<6;a3++)
    {//alert('111');
    if(a2==1 && a3==5){continue;}
    if(a2==5 && a3==1){continue;}
    if(a3==4){continue;}
    for(var a4=1;a4<6;a4++)
    {
    if(a3==1 && a4==5){continue;}
    if(a3==5 && a4==1){continue;}
    for(var a5=1;a5<6;a5++)
    {
    if(a4==1 && a5==5){continue;}
    if(a4==5 && a5==1){continue;}
    for(var a6=1;a6<6;a6++)
    {
    if(a5==1 && a6==5){continue;}
    if(a5==5 && a6==1){continue;}
    str+=a1+''+a2+''+a3+''+a4+''+a5+''+a6+'@@';
    num++;
    }
    }
    }
    }
    }
    }
    alert(str);
    alert('num~~~~~~~~~'+num);//8266
    }
      

  33.   

    总共有198
    public class C {
    public static void main(String []args)
    {
    int a[]={1,2,2,4,5,6};
    int i,j,k,l,m,n;
    int count = 0;
    for(i=0;i<a.length;i++)
    {
    for(j=0;j<a.length;j++)
    {
    for(k=0;k<a.length;k++)
    {
    for(l=0;l<a.length;l++)
    {
    for(m=0;m<a.length;m++)
    {
    for(n=0;n<a.length;n++)
    {
    if( a[k] ==4 || a[i]==1&&a[j]==5 || a[j]==1&&a[k]==5|| a[k]==1&&a[l]==5|| a[l]==1&&a[m]==5|| a[m]==1&&a[n]==5
    || a[i]==5&&a[j]==1 || a[j]==5&&a[k]==1|| a[k]==5&&a[l]==1|| a[l]==5&&a[m]==1|| a[m]==5&&a[n]==1)
    {
    continue;
    }
    else
    {
    if( i!=j && i!=k && i!=l&& i!=m && i!=n 
    && j!=k && j!=l && j!=m &&j!=n 
    && k!=l && k!=m && k!=n 
    && l!=m && l!=n 
    && m!=n)
    {
    count++; System.out.println(a[i]+""+a[j]+""+a[k]+""+a[l]+""+a[m]+""+a[n]);
        }
    }
    }
    }
    }
    }
    }

    }
    count=count/2;
    System.out.println(count);
    }
    }这里每一个排列都被打印了两次,原因是两个2他们两个交换一下位置又要去出来一个数,所以要除以2
      

  34.   

    第二个问题 
    a=a^b;
    b=b^a;
    a=a^b;
      

  35.   

    第二题首推:b=a+(a=b)*0;   利用暂存搞定它!
    至于第一题,不好意思,JAVA认识偶,偶不认识JAVA.
    。NET方面还是高效一些,框架搞好才能往上爬散。
      

  36.   

    为什么我的打印出来是262个?import java.util.*;public class perm
    {
    protected  static int listNb = 0;

    public void printItemList(int item[], int nb)
    {
    int i = 0; for(i = 0; i < nb; i++)
    {
    // 第3位不能为4
    if(item[3] == 4)
    {
    return ;
    }// System.out.println("i = " + i + "nb = " + nb);

    if(i < nb -1 )
    {
    // 1, 5不能相邻
    if((item[i] == 1 && item[i + 1] == 5) || (item[i] == 5 && item[i + 1] == 1))
    {
    return ;
    }
    }
    } listNb++; System.out.print(listNb + "th: ");
    for(i = 0; i < nb; i++)
    {
    System.out.print(item[i]);
    }
    System.out.println(""); return ;
    } public void perm(int nb, int maxNb, int outItem[], int item[])
    {
    int i = 0;
    int j = 0;
    int k = 0;
    int bRedundent = 0;
    int tempItem[] = {1, 2, 3, 4, 5, 6};

    // perm();

    for(i = 0; i < nb ; i++)
    {
    tempItem[i] = item[nb-1];
    k = 0;
    for(j = 0; j < nb; j++)
    {
    if(j != i)
    {
    tempItem[j] = outItem[k];
    k++; // 相同的数字相邻只排列第一种
    if((tempItem[i] == tempItem[j]) && (i == j + 1))
    {
    bRedundent = 1; 
    break;
    }
    }
    } if(bRedundent == 1)
    {
    bRedundent = 0;
    continue;
    }

    if(nb == maxNb)
    {
    printItemList(tempItem, nb);
    //break;
    }
    else
    {
    perm(nb + 1, maxNb, tempItem, item);
    }
    } // printItemList();
    }
    public static void main(String args[])
    {
    int item[] = {1, 2, 2, 3, 4, 5};
    int out_item[];
    int temp_item[] = {1, 2, 2, 3, 4, 5};
    perm pp = new perm();

    pp.perm(1, 6, temp_item,  item);
    return ;
    }
    }
      

  37.   

    搞定, 修改
    // 相同的数字相邻只排列第一种
    if((tempItem[i] == tempItem[j]) && (i == j + 1))为 
    // 相同的数字相邻只排列第一种
    if((tempItem[i] == tempItem[j]) && (i > j))
    就可以了一共198个
      

  38.   


    public class test122345 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    test122345 tt= new test122345();
    String[] number = {"1","2","2","3","4","5"};
    String numberstr="122345";
    int b=0;
    int count=0;
    for(int i=122345;i<=543221;i++)
    {
    if(tt.re('1', String.valueOf(i), 1)==-1 || tt.re('2', String.valueOf(i), 2)==-1 || tt.re('3', String.valueOf(i), 1)==-1 || tt.re('4', String.valueOf(i), 1)==-1 || tt.re('5', String.valueOf(i), 1)==-1)
    {

    }
    else
    {
    if(tt.re2("4", String.valueOf(i), 3)==-1)
    {

    }
    else
    {
    for(int j=0;j<number.length;j++)
    {
    String geti = String.valueOf(i);
    String getstr = geti.substring(j,j+1);
    b = numberstr.indexOf(getstr);

    int w1 = 0;
    w1 = geti.indexOf("1");
    if(w1<=4)
    {
    char c5 = geti.charAt(w1+1);
    if(c5=='5')
    {
    b = -1;
    }
    }

    int w5 = 0;
    w5 = geti.indexOf("5");
    if(w5<=4)
    {
    char c11 = geti.charAt(w5+1);
    if(c11=='1')
    {
    b = -1;
    }
    }

    if(b == -1)
    {
    break;
    }
    }
    if(b != -1)
    {
    count = count+1;
    System.out.println("i:"+i);
    }
    }
    }
    }
    System.out.println("count:"+count);
    }
    public int re(char c,String geti,int sum)
    {
    int count = 0;
    char getChar;
    for(int i=0;i<geti.length();i++)
    {
    getChar = geti.charAt(i);
    if(c == getChar)
    {
    count = count + 1;
    }
    }
    if(count>sum)
    {
    return -1;
    }
    else
    {
    return 0;
    }
    }
    public int re2(String s,String geti,int wei)
    {
    int w4 =0;
    w4 = geti.indexOf(s);
    if (w4==wei)
    {
    return -1;
    }
    else
    {
    return 0;
    }
    }
    }
      

  39.   

    结果:
    i:122345
    i:122354
    i:122534
    i:122543
    i:123245
    i:123254
    i:123524
    i:123542
    i:124235
    i:124253
    i:124325
    i:124352
    i:124523
    i:124532
    i:125234
    i:125243
    i:125324
    i:125342
    i:132245
    i:132254
    i:132524
    i:132542
    i:134225
    i:134252
    i:134522
    i:135224
    i:135242
    i:142235
    i:142253
    i:142325
    i:142352
    i:142523
    i:142532
    i:143225
    i:143252
    i:143522
    i:145223
    i:145232
    i:145322
    i:212345
    i:212354
    i:212534
    i:212543
    i:213245
    i:213254
    i:213524
    i:213542
    i:214235
    i:214253
    i:214325
    i:214352
    i:214523
    i:214532
    i:221345
    i:221354
    i:223145
    i:223541
    i:224135
    i:224531
    i:225314
    i:225341
    i:231245
    i:231254
    i:232145
    i:232541
    i:234125
    i:234521
    i:235214
    i:235241
    i:241235
    i:241253
    i:241325
    i:241352
    i:242135
    i:242531
    i:243125
    i:243521
    i:245213
    i:245231
    i:245312
    i:245321
    i:252134
    i:252143
    i:252314
    i:252341
    i:253124
    i:253142
    i:253214
    i:253241
    i:254123
    i:254132
    i:254213
    i:254231
    i:254312
    i:254321
    i:312245
    i:312254
    i:312524
    i:312542
    i:314225
    i:314252
    i:314522
    i:321245
    i:321254
    i:322145
    i:322541
    i:324125
    i:324521
    i:325214
    i:325241
    i:341225
    i:341252
    i:342125
    i:342521
    i:345212
    i:345221
    i:352124
    i:352142
    i:352214
    i:352241
    i:354122
    i:354212
    i:354221
    i:412235
    i:412253
    i:412325
    i:412352
    i:412523
    i:412532
    i:413225
    i:413252
    i:413522
    i:421235
    i:421253
    i:421325
    i:421352
    i:422135
    i:422531
    i:423125
    i:423521
    i:425213
    i:425231
    i:425312
    i:425321
    i:431225
    i:431252
    i:432125
    i:432521
    i:435212
    i:435221
    i:452123
    i:452132
    i:452213
    i:452231
    i:452312
    i:452321
    i:453122
    i:453212
    i:453221
    i:521234
    i:521243
    i:521324
    i:521342
    i:522134
    i:522143
    i:522314
    i:522341
    i:523124
    i:523142
    i:523214
    i:523241
    i:524123
    i:524132
    i:524213
    i:524231
    i:524312
    i:524321
    i:531224
    i:531242
    i:532124
    i:532142
    i:532214
    i:532241
    i:534122
    i:534212
    i:534221
    i:541223
    i:541232
    i:541322
    i:542123
    i:542132
    i:542213
    i:542231
    i:542312
    i:542321
    i:543122
    i:543212
    i:543221
    count:198