用數組實現約瑟夫出圈問題,n個人排成一圈,從第一個開始報數,報到m的人出圈,
          剩下的人繼續開始從1報數,直到所有的人都出圈為止。對于給定的n,m,
          求出所有的人出圈順序。

          class OutOfCircle {
               
          public OutOfCircle(int nn, int mm) {
                    n 
          = nn;
                    m 
          = mm;
                    man 
          = new int[n];                    //使用man數組表示N個人,man[i]為1表示i還在圈中,為0則表示i已經不在圈中
                    count = new int[n];                  //保存出圈順序
                    java.util.Arrays.fill(man, 1);     //初始化man,一開始所有人都在圈中,所以都為1
               }


               
          public int[] out() {
                    
          int c = 0;                      //當前人報的數
                    int j = 0;
                    
          while (total(man) != 0{      //當圈中沒人時,man中元素之和為0
                         for (int i = 0; i < n; i++{
                             c 
          = c + man[i];                     //報數,出去的人為0,相當于沒報
                              if (c != 0 && c % m == 0{        //表示當前c!=0一定要加上,因為0對任何數取余都為0
                                   man[i] = 0;                             //出圈,置為0
                                   count[j++= i + 1;                //保存出圈人的編號
                                   c = 0;                                //重新開始報數  
                              }

                         }

                    }

                    
          return count;
               }


               
          private int total(int[] t) {  //求INT數組的和
                    //int sum = 0;
                    
          for (int i : t) {
                         //sum 
          += i;
                              if(t[i]!=0) return 1;
                        }
                       return 0;
                    //
          return sum;
               }


               
          private int n;    
               
          private int m;   
               
          private int[] man;
               
          private int[] count; 
          }

          posted @ 2008-11-19 17:34 Bom Wu 閱讀(2201) | 評論 (7)編輯 收藏
           
          如果用JTextArea來做信息窗口,不斷用append()顯示新信息,通常會希望內容能自動滾動,保持最后增加的信息能夠顯示出來。利用setCaretPosition()可以實現,這個方法是設置輸入光標的位置,如果光標位置超出目前可視范圍,會自動滾動以保正光標可以顯示出來。

          int length = textArea.getText().length();
          textArea.setCaretPosition(length);

          posted @ 2008-11-19 14:40 Bom Wu 閱讀(3249) | 評論 (0)編輯 收藏
          僅列出標題
          共2頁: 上一頁 1 2 
           
          主站蜘蛛池模板: 邵阳县| 富川| 东莞市| 永登县| 精河县| 惠东县| 微博| 洪雅县| 辽宁省| 麻栗坡县| 阿城市| 长白| 左权县| 新乐市| 合水县| 文山县| 松桃| 宜宾县| 北碚区| 封开县| 赤壁市| 无棣县| 乌兰浩特市| 会东县| 宁波市| 体育| 尼玛县| 双城市| 乌什县| 商水县| 承德县| 南岸区| 三原县| 昌黎县| 新沂市| 康马县| 梅河口市| 长泰县| 遂溪县| 织金县| 蒲江县|