频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

java实现10个数的全排列的应用

来源: 作者: 出处:巧巧读书 2007-07-21 进入讨论组
   在校园网的论坛上看到的一些题目,放假了没有什么事做就想到了自己来试着做一些,到今天 才总是把它给做成了我想要实现的结果了,有时候就是那样,做了好久,都没办法做出来,到灵感来了的那一下,一下子就可以做出来,心里有点高兴。
在这个过程中,我对JAVA的IO了解得比以前多了一点,虽然还不是很熟悉,但大概也知道怎么用了,
如下:
1.  给定等式  A B C D E     其中每个字母代表一个数字,且不同数字对应不
                    D F G     同字母。编程求出这些数字并且打出这个数字的
             +      D F G     算术计算竖式。
             ───────
          语句;      X Y Z D E
下面是我自己的JAVA代码,里面有很大一段是人家写的10个数的全排列,我只是把修改成了JAVA

java实现10个数的全排列的应用(图一)import java.io.*;
java实现10个数的全排列的应用(图二)java实现10个数的全排列的应用(图三)public class PaiLei...{
java实现10个数的全排列的应用(图四)    static int count=0;
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)    private char[]  symbol=...{'A','B','C','D','E','F','G','X','Y','Z'} ;
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)    int [] num=...{0,1,2,3,4,5,6,7,8,9};
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)    public void  check()...{
java实现10个数的全排列的应用(图四)        //System.out.print("进来了呀");
java实现10个数的全排列的应用(图四)        //temp1 表示数字ABCDE
java实现10个数的全排列的应用(图四)        int temp1=num[0]*10000+num[1]*1000+num[2]*100+num[3]*10+num[4];
java实现10个数的全排列的应用(图四)        //temp2表示数字DFG
java实现10个数的全排列的应用(图四)        int temp2=num[3]*100+num[5]*10+num[6];
java实现10个数的全排列的应用(图四)        //temp3表示数字XYZDE
java实现10个数的全排列的应用(图四)        int temp3=num[7]*10000+num[8]*1000+num[9]*100+num[3]*10+num[4];
java实现10个数的全排列的应用(图四)        //判断表达式是不是成立
java实现10个数的全排列的应用(图四)        //System.out.print("进入循环");
java实现10个数的全排列的应用(图四)
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)        if((temp1+temp2*2)==temp3)...{
java实现10个数的全排列的应用(图四)            count++;
java实现10个数的全排列的应用(图四)            System.out.println(temp1+temp2+temp2);
java实现10个数的全排列的应用(图四)            System.out.println(temp3);
java实现10个数的全排列的应用(图四)            System.out.println("第"+count+"种答案");
java实现10个数的全排列的应用(图四)            print();
java实现10个数的全排列的应用(图七)        }    
java实现10个数的全排列的应用(图四)                     
java实现10个数的全排列的应用(图四)          
java实现10个数的全排列的应用(图七)    }
java实现10个数的全排列的应用(图四)    //function方法是核心方法,就是求10个数的全排列
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)    /** *//**
java实现10个数的全排列的应用(图四)        例4:将1到N的N个自然数排成一列,共有1*2*3……*N种不同的排列方法,如
java实现10个数的全排列的应用(图四)        N=3时, 有6种排列方案,分别为,123,132,213,231,312,321.试编程序输出1
java实现10个数的全排列的应用(图四)        到N的全部排列,假设N<10. 为了设计出由计算机输出1到N的全部排列程序,
java实现10个数的全排列的应用(图四)        就必须寻找不同排列之间的规律. 通过观察N=5(参见本例的运行结果)的排
java实现10个数的全排列的应用(图四)        列情况,可以发现,如果把每个排列看作一个自然数, 则所有排列对应的数是
java实现10个数的全排列的应用(图四)        按从小到大的顺序排列,从当前的排列产生下一个排列时必然会造成某一 位
java实现10个数的全排列的应用(图四)        置上的数字变大,这一位置显然应该尽量靠右,并且在它左边位置上的数字保
java实现10个数的全排列的应用(图四)        持不变,这就意味着这一位置变成的数字来自于它的右边,   并且变大的幅度
java实现10个数的全排列的应用(图四)        要尽可能小,也就是说在它右边如有几个 数同时比它大时,应该用其中最小的
java实现10个数的全排列的应用(图四)        来代替它.由于这一位置是满足上述条件的最右边的一位 ,所以在它右边的所
java实现10个数的全排列的应用(图四)        有数字按逆序排列,即在这些数字的右边没有一个大于它的数.程序中先从右
java实现10个数的全排列的应用(图四)        至左找到第一个位置,该位置上的数比它右边的数小,这个位置就是所要找的
java实现10个数的全排列的应用(图四)        满足上述条件的位置, 然后再从右到左找到第一个比该位置上的数字大的数
java实现10个数的全排列的应用(图四)        字所在的位置,将这两个位置上的数字交换,再将该位置右边的所有元素颠倒
java实现10个数的全排列的应用(图四)        过来,即将它们按从小到大的顺序排列,就得到了下一个排列.      
java实现10个数的全排列的应用(图四)        
java实现10个数的全排列的应用(图四)      结果应该是:   
java实现10个数的全排列的应用(图四)      Input   n:5   
java实现10个数的全排列的应用(图四)      12345   12354   12435   12453   12534   12543   13245   13254   13425   13452     
java实现10个数的全排列的应用(图四)      13524   13542   14235   14253   14325   14352   14523   14532   15234   15243     
java实现10个数的全排列的应用(图四)      15324   15342   15423   15432   21345   21354   21435   21453   21534   21543     
java实现10个数的全排列的应用(图四)      23145   23154   23415   23451   23514   23541   24135   24153   24315   24351     
java实现10个数的全排列的应用(图四)      24513   24531   25134   25143   25314   25341   25413   25431   31245   31254     
java实现10个数的全排列的应用(图四)      31425   31452   31524   31542   32145   32154   32415   32451   32514   32541     
java实现10个数的全排列的应用(图四)      34125   34152   34215   34251   34512   34521   35124   35142   35214   35241     
java实现10个数的全排列的应用(图四)      35412   35421   41235   41253   41325   41352   41523   41532   42135   42153     
java实现10个数的全排列的应用(图四)      42315   42351   42513   42531   43125   43152   43215   43251   43512   43521     
java实现10个数的全排列的应用(图四)      45123   45132   45213   45231   45312   45321   51234   51243   51324   51342     
java实现10个数的全排列的应用(图四)      51423   51432   52134   52143   52314   52341   52413   52431   53124   53142     
java实现10个数的全排列的应用(图四)      53214   53241   53412   53421   54123   54132   54213   54231   54312   54321   
java实现10个数的全排列的应用(图四)        
java实现10个数的全排列的应用(图四)           
java实现10个数的全排列的应用(图四)      #include<iostream>   
java实现10个数的全排列的应用(图四)      using   namespace   std;   
java实现10个数的全排列的应用(图四)        
java实现10个数的全排列的应用(图四)      void   main(){   
java实现10个数的全排列的应用(图四)            int   n;                                     //n个数字的排列;   
java实现10个数的全排列的应用(图四)            cout<<"input:";   
java实现10个数的全排列的应用(图四)            cin>>n;   
java实现10个数的全排列的应用(图四)            int   *p=new   int[n];                   //数组保存各位数字;   
java实现10个数的全排列的应用(图四)            for(int   i=0;i<n;i++)             //初始化为第一个排列;   
java实现10个数的全排列的应用(图四)                  p[i]=i+1;   
java实现10个数的全排列的应用(图四)            do{   
java实现10个数的全排列的应用(图四)                  for(i=0;i<n;i++)             //输出排列中的数字   
java实现10个数的全排列的应用(图四)                        cout<<p[i]<<"   ";   
java实现10个数的全排列的应用(图四)                  cout<<endl;               
java实现10个数的全排列的应用(图四)                  for(int   j=n-1;j>0;j--)       //从右向左;找要交换的位置1(j);   
java实现10个数的全排列的应用(图四)                        if(p[j]>p[j-1])   break;   
java实现10个数的全排列的应用(图四)                  if(j==0)break;                   //找不到要交换的位置.退出do   
java实现10个数的全排列的应用(图四)                  j--;   
java实现10个数的全排列的应用(图四)                  for(int   k=n-1;k>j;k--)       //在位置1右边;从右向左;   
java实现10个数的全排列的应用(图四)                                                      //找要交换的位置2(k);   
java实现10个数的全排列的应用(图四)                        if(p[k]>p[j])break;   
java实现10个数的全排列的应用(图四)                  swap(p[k],p[j]);             //交换位置1和位置2的值;   
java实现10个数的全排列的应用(图四)                  //把位置1后边的所有位反序排列;   
java实现10个数的全排列的应用(图四)                  for(int   x=j+1,y=n-1;x<y;x++,y--)   
java实现10个数的全排列的应用(图四)                        swap(p[x],p[y]);   
java实现10个数的全排列的应用(图四)            }while(1);   
java实现10个数的全排列的应用(图四)      delete   []p;   
java实现10个数的全排列的应用(图四)      }
java实现10个数的全排列的应用(图四)         
java实现10个数的全排列的应用(图七)      */
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)    public void function()throws IOException...{
java实现10个数的全排列的应用(图四)        int i,temp,j;
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)        do...{            
java实现10个数的全排列的应用(图四)            check();
java实现10个数的全排列的应用(图四)            //write();
java实现10个数的全排列的应用(图四)            
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)            for(i=9;i>0;i--)...{
java实现10个数的全排列的应用(图四)                if(num[i]>num[i-1])
java实现10个数的全排列的应用(图四)                    break;
java实现10个数的全排列的应用(图七)            }
java实现10个数的全排列的应用(图四)            if(i==0)
java实现10个数的全排列的应用(图四)                break;
java实现10个数的全排列的应用(图四)            i--;
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)            for(j=9;j>i;j--)...{
java实现10个数的全排列的应用(图四)                if(num[j]>num[i]) break;
java实现10个数的全排列的应用(图七)            }
java实现10个数的全排列的应用(图四)            temp= num[j];
java实现10个数的全排列的应用(图四)            num[j]=num[i];
java实现10个数的全排列的应用(图四)            num[i]=temp; 
java实现10个数的全排列的应用(图四)            //下面循环是
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)            for(int x=i+1,y=9;x<y;x++,y--)...{
java实现10个数的全排列的应用(图四)                temp=num[x];
java实现10个数的全排列的应用(图四)                num[x]=num[y];
java实现10个数的全排列的应用(图四)                num[y]=temp;
java实现10个数的全排列的应用(图七)            }            
java实现10个数的全排列的应用(图七)        }while(true);
java实现10个数的全排列的应用(图七)    }
java实现10个数的全排列的应用(图四)    //输出正确结果的方法
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)    public void print()...{
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)            for(int j=0;j<=9;j++)...{            
java实现10个数的全排列的应用(图四)                      //输出ABCDEFGXYZ              
java实现10个数的全排列的应用(图四)                     System.out.print(symbol[j]+"  ");                      
java实现10个数的全排列的应用(图七)              }
java实现10个数的全排列的应用(图四)                  System.out.println();
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)                      for(int j=0;j<=9;j++)...{    
java实现10个数的全排列的应用(图四)                          //输出他们对应的值                      
java实现10个数的全排列的应用(图四)                          System.out.print(num[j]+"  ");                      
java实现10个数的全排列的应用(图七)                      }
java实现10个数的全排列的应用(图四)            System.out.println();
java实现10个数的全排列的应用(图四)                        System.out.println("        "+num[0]+num[1]+num[2]+num[3]+num[4]);
java实现10个数的全排列的应用(图四)                  System.out.println("          "+num[3]+num[5]+num[6]);
java实现10个数的全排列的应用(图四)                  System.out.println("  +       "+num[3]+num[5]+num[6]);
java实现10个数的全排列的应用(图四)                  System.out.println("        "+num[7]+num[8]+num[9]+num[3]+num[4]);
java实现10个数的全排列的应用(图四)                     System.out.println();
java实现10个数的全排列的应用(图四)
java实现10个数的全排列的应用(图四)                  
java实现10个数的全排列的应用(图七)    }
java实现10个数的全排列的应用(图四)    //将所有排列写入记事本
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)    public void write()throws IOException...{
java实现10个数的全排列的应用(图四)         File myfile=new File("d:\paiei.txt");
java实现10个数的全排列的应用(图四)         FileOutputStream out=new FileOutputStream(myfile,true);
java实现10个数的全排列的应用(图四)         DataOutputStream out1=new DataOutputStream(out);
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)         byte[] temp=...{0,0,0,0,0,0,0,0,0,0};
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)         for(byte i=0;i<=9;i++)...{
java实现10个数的全排列的应用(图四)             temp[i]=(byte)num[i];         //num数组是一个int型
java实现10个数的全排列的应用(图四)             out1.writeByte(temp[i]+48);
java实现10个数的全排列的应用(图四)             PrintStream out2=new PrintStream(out);
java实现10个数的全排列的应用(图四)             out2.print(" ");
java实现10个数的全排列的应用(图四)            // out2.close();             
java实现10个数的全排列的应用(图七)         }
java实现10个数的全排列的应用(图四)         PrintStream out2=new PrintStream(out);
java实现10个数的全排列的应用(图四)         out2.println();
java实现10个数的全排列的应用(图四)        // out2.close();
java实现10个数的全排列的应用(图四)//==============下面几行注释了的是,向控治台输出显示       
java实现10个数的全排列的应用(图四)//         ByteArrayInputStream in=new ByteArrayInputStream(temp);
java实现10个数的全排列的应用(图四)//         int data=in.read();
java实现10个数的全排列的应用(图四)//         while(data!=-1){
java实现10个数的全排列的应用(图四)//             //out.write(temp);
java实现10个数的全排列的应用(图四)//             System.out.print("  "+data);
java实现10个数的全排列的应用(图四)//             data=in.read();
java实现10个数的全排列的应用(图四)//         }
java实现10个数的全排列的应用(图四)//         System.out.print(" ");
java实现10个数的全排列的应用(图四)//         in.close();
java实现10个数的全排列的应用(图四)         out1.close();            
java实现10个数的全排列的应用(图七)    } 
java实现10个数的全排列的应用(图五)java实现10个数的全排列的应用(图六)    public static void main(String [] args) throws IOException...{
java实现10个数的全排列的应用(图四)            PaiLei p=new PaiLei();
java实现10个数的全排列的应用(图四)            p.function();
java实现10个数的全排列的应用(图四)            
java实现10个数的全排列的应用(图七)        }   
java实现10个数的全排列的应用(图四)    
java实现10个数的全排列的应用(图八)}

java实现10个数的全排列的应用(图九)

文章地址: http://www.qqread.com/java/2007/07/c321800.html 更多文章 更多内容请看Java环境安装配置Java编程开发手册Java应用开发篇专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章