我先开个头,这是我收藏的一个关于字符串全排序的问题
public class AllSort { 
    private Set set = new HashSet(); //保证相同的字符串只出现一次!
    public static void main(String[] args) { 
         String s ="erye";//因为全排序字符串个数是长度的阶乘,这里就不写长字符串,不然个数可以而知       
        char[] buf=s.toCharArray(); 
     
        AllSort as = new AllSort(); 
        as.perm(buf,0,buf.length-1); 
        System.out.println(as.set); 
    } 
    public void perm(char[] buf,int start,int end){ 
        if(start==end){//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可 
         String str=""; 
            for(int i=0;i<=end;i++){ 
                //System.out.print(buf[i]); 
             str+=buf[i];             
            } 
            set.add(str); 
            //System.out.println();     
        } 
        else{//多个字母全排列 
            for(int i=start;i<=end;i++){ 
                char temp=buf[start];//交换数组第一个元素与后续的元素 
                buf[start]=buf[i]; 
                buf[i]=temp; 
                //printArray(buf);   
                 
                perm(buf,start+1,end);//后续元素递归全排列 
                 
                temp=buf[start];//将交换后的数组还原 
                buf[start]=buf[i]; 
                buf[i]=temp; 
                //printArray(buf); 
            } 
        } 
    } 
//    public static void printArray (char[] charArray){ 
//        System.out.print("Now the array includes: "); 
//        for (int i=0; i<charArray.length; i++){ 
//            System.out.print(charArray[i]); 
//        } 
//        System.out.println(""); 
//    } 

解决方案 »

  1.   


    Hehe  I sent it to u...
    JF...Happy Mid-Autumn Day!!!
      

  2.   

    取得指定月份的第一天与取得指定月份的最后一天
     /**
    * 取得指定月份的第一天
    *
    * @param strdate String
    * @return String
    */
    public String getMonthBegin(String strdate)
    {
    java.util.Date date = parseFormatDate(strdate);
    return formatDateByFormat(date,"yyyy-MM") + "-01";
    }/**
    * 取得指定月份的最后一天
    *
    * @param strdate String
    * @return String
    */
    public String getMonthEnd(String strdate)
    {
    java.util.Date date = parseFormatDate(getMonthBegin(strdate));
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.MONTH,1);
    calendar.add(Calendar.DAY_OF_YEAR, -1);
    return formatDate(calendar.getTime());
    }
      

  3.   

    /**
    * 格式化输出日期
    *
    * @param date
    * 日期
    * @param format
    * 格式
    * @return 返回字符型日期
    */
    public static String format(java.util.Date date, String format) {
    String result = "";
    try {
    if (date != null) {
    java.text.DateFormat df = new java.text.SimpleDateFormat(format);
    result = df.format(date);
    }
    } catch (Exception e) {
    }
    return result;
    }public static String format(java.util.Date date) {
    return format(date, "yyyy/MM/dd");
    }
    public   java.util.Date   parseFormatDate(String   strDate)   
              {   
                      java.util.Date   date   =   null;   
                      if(strDate.indexOf("-")   >   0)   
                      {   
                              date   =   parseFormatDateBy(strDate,"-");   
                      }   
                      else   
                      {   
                              if(strDate.indexOf(".")   >   0)   
                              {   
                                      date   =   parseFormatDateBy(strDate,".");   
                              }   
                              else   
                              {   
                                      logger.info("date   格式不对:"   +   date);   
                              }   
                      }   
                      return   date;   
              }   
        
              public   java.util.Date   parseFormatDateBy(String   strDate,String   division)   
              {   
                      java.util.Date   date   =   null;   
                      try   
                      {   
                              SimpleDateFormat   sdf   =   new   SimpleDateFormat("yyyy"   +   division   +   "MM"   +   division   +   "dd");   
                              date   =   sdf.parse(strDate);   
                      }   
                      catch(Exception   ex)   
                      {   
                              ex.printStackTrace();   
                      }   
                      return   date;   
              } 
      

  4.   

    public class Test {
        public static void main(String[] args) {
            double n1 = pow(2, 6);
            double n2 = pow(2, -6);
            System.out.println(n1);
            System.out.println(n2);
        }    public static double pow(double base, int exponent) {
            if (exponent < 0)
                return 1 / pow(base, -exponent);
            double power = 1;
            while(exponent > 0) {
                if((exponent & 1) == 1) {
                    power *= base;
                }
                base *= base;
                exponent >>= 1;
            }
            return power;
        }
    }
      

  5.   

    public class LoopFor11{
        public void print1(int num){         //星星包围一个菱形空格
            int n;
            n= 2 * num +1;                  //总的列数或行数
            for(int i = 1,j = 1;j <= n;i++){      //j 行 i 列
                int m = Math.abs(num + 1 - j);    //每行的一部分星
                if(m  + 1< i && i < n - m)        //计算的出每行的前半部分的星和所有空格所占的位置数减去前半部分的星
                    System.out.print(" ");
                else
                    System.out.print("*");
                if(i == n){                      //当列数i到达n列,该换行了
                    System.out.println();
                    i = 0;                      //这时i赋值为0,一会i回到for后面下括弧的i++里,重新得到i=1;
                    j++;
                }
            }
        }
        
        public static void main(String[] args){
            
            LoopFor11 lp = new LoopFor11();
            lp.print1(4);
        }结果是这样子的:
    *********
    **** ****
    ***   ***
    **     **
    *       *
    **     **
    ***   ***
    **** ****
    *********
      

  6.   

    发错拉,刚才上面的结果图错了
    应该这样子的
    一个for循环做成这样子的
    *********
    **** ****
    ***   ***
    **     **
    *       *
    **     **
    ***   ***
    **** ****
    *********
      

  7.   


    代码或者图都用回复框上面工具栏中的第七个(“#”图标)点 Java 就行了*********
    **** ****
    ***  ***
    **    **
    *      *
    **    **
    ***  ***
    **** ****
    *********
      

  8.   

    汉诺塔
    import javax.swing.JOptionPane;  public class Hanoi {  private static final String DISK_B = "diskB";  private static final String DISK_C = "diskC";  private static final String DISK_A = "diskA";  static String from=DISK_A;  static String to=DISK_C;  static String mid=DISK_B;  public static void main(String[] args) {  String input=JOptionPane.showInputDialog("please input the number of the disks you want me move.");  int num=Integer.parseInt(input);  move(num,from,mid,to);  }  private static void move(int num, String from2, String mid2, String to2) {  if(num==1){  System.out.println("move disk 1 from "+from2+" to "+to2);  }  else {  move(num-1,from2,to2,mid2);  System.out.println("move disk "+num+" from "+from2+" to "+to2);  move(num-1,mid2,from2,to2);  }  }  }
      

  9.   

    public String getMonthEnd(String strdate) 

    java.util.Date date = parseFormatDate(getMonthBegin(strdate)); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(date); 
    calendar.add(Calendar.MONTH,1); 
    calendar.add(Calendar.DAY_OF_YEAR, -1); 
    return formatDate(calendar.getTime()); 
    }
      

  10.   

    来个0-1背包的问题。
    public class TestBeibao{
     int out_n=8;
     int p[] = new int[100];
     void cal(int m,int n){
      if(m<1 ||n<1||(n==1&&m!=1))
      return ;
      if(m==n){
      p[n]= 1;
      for(int i=1;i<=out_n;i++){
      if(p[i]==1)
      System.out.print(" "+i);
      }
      System.out.print("\n");
      p[n]=0;
      }
      cal(m,n-1);
      p[n]=1;
      cal(m-n,n-1);
      p[n]=0;
      }
      public static void main(String [] args){
      int m=10,n=8;
      TestBeibao t = new TestBeibao();
      t.cal(m, n);
      }
    }
      

  11.   


       private Set set = new HashSet(); 请问这一句要先引用什么类吗?我编译通不过.
      

  12.   

    哈哈 我刚好也有一个 字符串全排序的问题;很可惜的是 我用debug看了很久 也不是很明白 它怎么做到了 也希望各位高手看看
    public class QuanPaiLei { public static int MAX = 4; public static boolean state[] = new boolean[MAX + 1]; public static int item[] = new int[MAX + 1]; public static String element[] = { "a", "b", "c","d" }; public static void main(String[] args) {
    DoPermutation(1);
    } public static void DoPermutation(int pos) {
    if (pos > MAX) {
    for (int j = 1; j <= MAX; j++)
    System.out.print(element[item[j] - 1]);
    System.out.println();
    return;
    }
    for (int i = 1; i <= MAX; i++) {
    if (!state[i]) {
    state[i] = true;
    item[pos] = i;
    DoPermutation(pos + 1);
    state[i] = false;
    }
    }
    }
    }
    这个算法 说实在我感觉比较 精妙
      

  13.   

    前几天无聊写了一个输入字符串的算术进行计算的,虽然没有别人写的好,也来凑个热闹,献个丑public class ComputeByString
    {
    public static String getResult(String text)
    {
    String result=null; if(text.indexOf("(")==-1)
    {
    String[] tookens=text.split("[+-[*]/]");
    if(tookens.length==2)
    {
    result=compute(text);
    }
    else
    {
    StringBuffer fuhao=new StringBuffer();
    for(char ch:text.toCharArray())
    {
    if(ch>'9'||ch<'0')
    {
    fuhao.append(ch);
    }
    }
    if(fuhao.indexOf("*")!=-1||fuhao.indexOf("/")!=-1)
    {
    int ind1=fuhao.indexOf("*");
    int ind2=fuhao.indexOf("/");
    int ind=ind2;
    if(ind1!=-1)
    {
    if(ind2!=-1)
    {
    ind=ind1>ind2?ind2:ind1;
    }
    else
    {
    ind=ind1;
    }
    }
    else if(ind1==-1)
    {
    ind=ind2;
    }
    String tmp=tookens[ind]+fuhao.charAt(ind)+tookens[ind+1];
    String rs=compute(tmp);
    result=getResult(text.replace(tmp,rs));
    }
    else
    {
    String tmp=tookens[0]+fuhao.charAt(0)+tookens[1];
    String rs=compute(tmp);
    result=getResult(text.replace(tmp,rs));
    }
    }
    }
    else
    {
    String subtext=text.substring(0,text.indexOf(")"));
    String tmptext=subtext.substring(subtext.lastIndexOf("(")+1);
    String str="("+tmptext+")";
    String tmpstring=getResult(tmptext);
    if(tmpstring.startsWith("-"))
    {
    if(text.charAt(text.indexOf(str)-1)=='-')
    {
    tmpstring=tmpstring.replace('-','+');
    str="-"+str;
    }
    }
    result=getResult(text.replace(str,tmpstring));
    }
    return result;
    }
    private static String compute(String text)
    {
    String result=""; if(text.indexOf("*")!=-1)
    {
    String tmp1=text.substring(0,text.indexOf("*"));
    String tmp2=text.substring(text.indexOf("*")+1,text.length());
    int s1=Integer.valueOf(tmp1).intValue();
    int s2=Integer.valueOf(tmp2).intValue();
    int r=s1*s2;
    result=r+"";
    }
    else if(text.indexOf("/")!=-1)
    {
    String tmp1=text.substring(0,text.indexOf("/"));
    String tmp2=text.substring(text.indexOf("/")+1,text.length());
    int s1=Integer.valueOf(tmp1).intValue();
    int s2=Integer.valueOf(tmp2).intValue();
    int r=s1/s2;
    result=r+"";
    }
    else if(text.indexOf("+")!=-1)
    {
    String tmp1=text.substring(0,text.indexOf("+"));
    String tmp2=text.substring(text.indexOf("+")+1,text.length());
    int s1=Integer.valueOf(tmp1).intValue();
    int s2=Integer.valueOf(tmp2).intValue();
    int r=s1+s2;
    result=r+"";
    }
    else if(text.indexOf("-")!=-1)
    {
    String tmp1=text.substring(0,text.indexOf("-"));
    String tmp2=text.substring(text.indexOf("-")+1,text.length());
    int s1=Integer.valueOf(tmp1).intValue();
    int s2=Integer.valueOf(tmp2).intValue();
    int r=s1-s2;
    result=r+"";
    }

    return result;
    }
    }
      

  14.   


    import java.util.Set;
    import java.util.HashSet;