亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

一個實現排列和組合的JavaBean

2019-11-18 12:05:32
字體:
來源:轉載
供稿:網友

  在我們編程時,經常要涉及到排列和組合的問題。那么在java中應該如何實現呢?其實這個問題首先是個算法的問題,明確了算法,用什么編程語言倒是顯得不那么重要了。
  
  一、全排列
  所謂全排列,就是對n個對象,列出其所有可能的排列順序。這個問題相對來說要簡單一點。讓我們先從最簡單的情況著手,假如我們只有一個對象,該如何實現其全排列呢?答案很簡單,現在我們只有一種排列。OK,現著我們試著引入第二個對象,首先我們需要知道,現在增加了幾種全排列的可能,我們可以這么看,第n個對象的引入,對于n-1個對象的全排列的影響就是在原先的每一個全排列中的任一位置插入第n個對象,也就是說,listcount(n)=listcount(n-1)*n;而按照這個思路,對于任意n個對象的全排列,我們都可以從最簡單的一個對象的全排列開始直到生成全部n個對象的全排列。
  
  二、組合
  所謂組合,就是從n個對象中取出任意m個對象的全部可能。這個問題可能要復雜一點。對于組合來說,對象的順序是沒有意義的,1、2、3和3、2、1是同一種可能。那么我們有必要人為地制定一個規則,我們可以設想給每一個對象編上連續的序號,而在我們的組合中對象必須是按其序號的順序排列,這樣我們就能有效地避免排列順序對我們的影響。假定我們現在有六個對象,其序號是1、2、3、4、5、6。那么我們的第一種組合是1、2、3,而最后一種組合則是4、5、6。在此之間,我們經歷了其它有可能出現的18種情況,對于這種算法我們很自然地會想到使用遞歸函數。首先我們先在我們的結果集中定義第一種可能是1、2、3,然后我們把當前位置定為最后一位,只要有可能,對于最后一位來說,它的最大值只能是6,在未到6之前,每增加一次就增加一種新的組合,假如最后一位已經是6,則我們將當前位置轉入前一位,前一位的最大值是5,假如前一位還沒到5,則將前一位加一,然后當前位置再度轉入最后一位,現在最后一位的最小值是4,從4開始直到6,又形成了我們新的組合,這樣,直到我們最終出現4、5、6這個組合時,函數退出。
  下面是我們的Java源程序:
  mytest.java:
  package customers;
  public class mytest
  {String[] mychar=new String[50];
  int charcount;
  int charlist;
  public void SetMyTest()
  //初始化
  {charcount=0;
  charlist=1;
  }
  public void insertChar(String thischar)
  //增加新的字符串
  {charcount++;
  mychar[charcount]=thischar;
  charlist*=charcount;
  }
  public String listAllChar()
  //列出全排列
  {String[][] allchar=new String[charlist+1][charcount+1];
  int i;
  int j;
  int z=1;
  for (i=1;i<=charcount;i++)
  {myCopy(addCharList(i,allchar,z),allchar,charlist,charcount);
  z*=i;
  }
  String listallchar=new String(/"/");
  for (i=1;i<=charlist;i++)
  {for (j=1;j<=charcount;j++)
  listallchar+=allchar[i][j]+/" /";
  listallchar=listallchar+/"<BR>/";
  }
  return listallchar;
  }
  public String[][] addCharList(int i,String[][] allchar,int z)
  //在i-1個對象的全排列中引入第i個對象
  {int j;
  int h=1;
  int k;
  String[][] tempallchar=new String[charlist+1][charcount+1];
  for (k=1;k<=z;k++)
  {for (j=1;j<=i;j++)
  {myCopy(tempchar(j,allchar[k],mychar[i]),tempallchar[h],charcount);
  h++;
  }
  }
  return tempallchar;
  }
  public String[] tempchar(int i,String[] beginchar,String thischar)
  //將新對象插入指定位置
  {int j;
  String[] tempbeginchar=new String[charcount+1];
  myCopy(beginchar,tempbeginchar,charcount);
  for (j=charcount;j>i;j--) tempbeginchar[j]=tempbeginchar[j-1];
  tempbeginchar[i]=thischar;
  return tempbeginchar;
  }
  public String selectSomeChar(int select)
  //列出其中取出select個對象的全部組合
  {int selectcount=1;
  int i;
  for (i=select+1;i<=charcount;i++) selectcount=selectcount*i/(i-select);
  String[][] selectchar=new String[selectcount+1][select+1];
  int[][] selectint=new int[selectcount+1][select+1];
  for (i=1;i<=select;i++)
  {selectchar[1][i]=mychar[i];
  selectint[1][i]=i;
  }
  int z=1;
  addSelect(selectchar,selectint,1,select,select);
  int j;
  String selectsomechar=new String(/"/");
  for (i=1;i<=selectcount;i++)
  {for (j=1;j<=select;j++)
  selectsomechar+=selectchar[i][j]+/" /";
  selectsomechar=selectsomechar+/"<BR>/";
  }
  return selectsomechar;
  }
  public void addSelect(String[][] selectchar,int[][] selectint,int z,int position,int select)
  //增加新的組合
  {int i;
  if (position==select)
  {if (selectint[z][position]<charcount)
  {z++;
  myCopy(selectint[z-1],selectint[z],select);
  selectint[z][select]++;
  for (i=1;i<=select;i++) selectchar[z][i]=mychar[selectint[z][i]];
  addSelect(selectchar,selectint,z,position,select);
  }
  else
  {position--;
  addSelect(selectchar,selectint,z,position,select);
  }
  }
  else
  {if (selectint[z][position]<charcount-select+position)
  {selectint[z][position]++;
  selectint[z][position+1]=selectint[z][position]+1;
  position++;
  addSelect(selectchar,selectint,z,position,select);
  }
  else
  {if (position==1)
  {return;
  }
  else
  {position--;
  addSelect(selectchar,selectint,z,position,select);
  }
  }
  }
  }
  public void myCopy(String[][] Str1,String[][] Str2,int i,int j)
  {int h;
  int k;
  for (h=1;h<=i;h++) for (k=1;k<=j;k++) Str2[h][k]=Str1[h][k];
  }
  public void myCopy(String[] Str1,String[] Str2,int i)
  {int h;
  for (h=1;h<=i;h++) Str2[h]=Str1[h];
  }
  public void myCopy(int[] Str1,int[] Str2,int i)
  {int h;
  for (h=1;h<=i;h++) Str2[h]=Str1[h];
  }
  }
  現在我們可以在一個jsp程序中使用這個JavaBean:
  <%@ page contentType=/"text/Html;charset=gb2312/" %>
  <HTML>
  <HEAD>
  <TITLE>
  排列和組合
  </TITLE>
  </HEAD>
  <BODY>
  <jsp:useBean id=/"mytest/" scope=/"page/" class=/"customers.mytest/" />
  <%
  mytest.SetMyTest();
  mytest.insertChar(/"YSY/");
  mytest.insertChar(/"DBF/");
  mytest.insertChar(/"CYY/");
  mytest.insertChar(/"YKF/");
  mytest.insertChar(/"SJJ/");
  mytest.insertChar(/"YZDS/");
  out.PRint(mytest.listAllChar());
  out.print(mytest.selectSomeChar(3));
  %>
  </BODY>
  </HTML>
  
  三、排列
  所謂排列,就是從n個對象中取出m個對象的所有排列的可能。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品成人国产在线观看男人呻吟| 国产综合久久久久久| 97精品久久久中文字幕免费| 国产精品扒开腿做爽爽爽视频| 成人日韩av在线| 欧美视频专区一二在线观看| 国产婷婷97碰碰久久人人蜜臀| 中文字幕亚洲国产| 欧美区二区三区| 国语自产精品视频在线看| 日本韩国欧美精品大片卡二| 国产精品欧美激情在线播放| 久久精品视频在线观看| 激情成人中文字幕| 精品国产欧美一区二区三区成人| 国产亚洲aⅴaaaaaa毛片| 日韩中文字在线| 精品久久久久久国产| 成人黄色av网站| 国产精品自拍视频| 亚洲欧美中文另类| 国a精品视频大全| 久热爱精品视频线路一| 视频直播国产精品| 亚洲精品456在线播放狼人| 欧美夫妻性生活视频| 亚洲日本aⅴ片在线观看香蕉| 欧美韩日一区二区| 亚洲欧美国产精品va在线观看| 成人性生交大片免费观看嘿嘿视频| 91精品国产91久久久久久吃药| 亚洲国产成人久久综合| 国产精品igao视频| 在线视频欧美日韩精品| 亚洲精品久久久久久久久| 亚洲综合中文字幕68页| 亚洲毛片在线看| 日韩精品久久久久久福利| 中文字幕久久亚洲| yellow中文字幕久久| 国产在线观看一区二区三区| 欧美性猛交xxxx黑人| 成人在线一区二区| 日韩美女视频在线观看| 在线视频一区二区| 欧美大尺度激情区在线播放| 久久久欧美精品| 成人网址在线观看| 欧洲成人在线视频| 97激碰免费视频| 欧美在线观看网址综合| 国产一区二区三区在线播放免费观看| 国产免费一区视频观看免费| 亚洲一区二区久久久| 夜夜嗨av一区二区三区免费区| 亚洲欧洲在线观看| 69影院欧美专区视频| 91tv亚洲精品香蕉国产一区7ujn| 91超碰中文字幕久久精品| 中日韩午夜理伦电影免费| 亚洲成人精品久久久| 91亚洲人电影| 国产精品久久久久aaaa九色| 91精品国产色综合| 欧美一级免费看| 国内精品久久久久| 蜜臀久久99精品久久久久久宅男| 日本高清久久天堂| 国产日韩换脸av一区在线观看| 欧美一区二区.| 欧美日韩国产在线看| 国产精品第100页| 成人欧美一区二区三区在线| 97在线精品国自产拍中文| 欧美色视频日本版| 亚洲xxx大片| 亚洲桃花岛网站| 精品视频一区在线视频| 在线视频日本亚洲性| 91精品久久久久久久久久久| 亚洲综合中文字幕68页| 国语自产精品视频在线看抢先版图片| 国产欧美一区二区| 久久免费视频观看| 日韩欧美精品中文字幕| 国语自产精品视频在线看一大j8| 亚洲欧洲在线视频| 在线日韩日本国产亚洲| 亚洲免费一在线| 中文字幕精品一区久久久久| 色伦专区97中文字幕| 亚洲第一区中文99精品| 日韩黄色在线免费观看| 成人午夜一级二级三级| 亚洲国产天堂久久国产91| 播播国产欧美激情| 最近2019中文免费高清视频观看www99| 久久精品国产亚洲一区二区| 日韩大片在线观看视频| 中文字幕亚洲无线码a| 色综合久久中文字幕综合网小说| 欧美日韩中文在线| 亚洲欧美国产一本综合首页| 久久久久成人网| 色婷婷久久一区二区| 欧美中文字幕第一页| 国内精品400部情侣激情| 日韩精品免费在线视频观看| 欧美乱大交做爰xxxⅹ性3| 日韩在线资源网| 欧美日韩在线视频首页| 一区二区三区天堂av| 国产成人欧美在线观看| 欧美色道久久88综合亚洲精品| 日韩电影中文字幕av| 久久精视频免费在线久久完整在线看| 国内精品久久久久影院 日本资源| 亚洲欧美另类自拍| 日韩美女在线播放| 日韩av在线天堂网| 清纯唯美日韩制服另类| 欧美黑人巨大xxx极品| 欧美电影在线播放| 国产精品成人一区二区三区吃奶| 欧美激情在线视频二区| 国产精品午夜一区二区欲梦| www日韩中文字幕在线看| 亚洲石原莉奈一区二区在线观看| 国产精品免费视频久久久| 亚洲视频一区二区三区| 亚洲欧洲自拍偷拍| 久久精品一本久久99精品| 日韩一区二区久久久| 国产99久久精品一区二区 夜夜躁日日躁| 欧美午夜激情小视频| 欧美成人免费在线视频| 亚洲欧美福利视频| 国产精品成人v| 欧美综合在线第二页| 国产69精品久久久久99| 91在线高清免费观看| 成人在线中文字幕| 亚洲精品wwww| 午夜精品一区二区三区在线视| 性色av香蕉一区二区| 大胆人体色综合| 亚洲日韩欧美视频| 成人久久精品视频| 播播国产欧美激情| 亚洲精品国产成人| 久久精品久久精品亚洲人| 亚洲性生活视频在线观看| 欧美怡春院一区二区三区| 国产成人精品日本亚洲专区61| 亚洲国产中文字幕在线观看| 国产精品视频成人| 在线观看日韩欧美| 欧美成人午夜免费视在线看片| 久久久久久国产精品久久| 日本一区二区不卡| 久久久久久久电影一区| 久久久久国色av免费观看性色| 欧美人与性动交a欧美精品| 日本精品久久久|