我的評論

          re: 求一組序列的全排列[未登錄] lanxiazhi 2009-07-29 20:27  
          hello,以下是遞歸java實現:
          class Perm
          {
          static String letters="123456";//任意不重復字符串
          static int count;
          static void per(StringBuilder sb)
          {
          if(sb.length()==letters.length())
          {
          System.out.println(sb);
          count++;
          return;
          }
          for(int i=0;i<sb.length()+1;i++)
          {
          per(sb.insert(i,letters.charAt(sb.length())));
          sb.deleteCharAt(i);
          }
          }
          public static void main(String[] args)
          {
          per(new StringBuilder());
          System.out.println(count);
          }
          }
          你好,謝謝你的題目,我寫了另外的一個算法:http://www.aygfsteel.com/lanxiazhi/archive/2009/07/27/288626.html。解法有局限,只是針對這個題寫的。
          re: 深入理解i++和++i[未登錄] lanxiazhi 2009-07-26 22:12  
          我來具體說明:
          int i=0;
          i=i++;
          上述兩行java代碼bytecode如下:
          iconst_0 //把常量0放到堆棧
          istore_1 //把堆棧上的數(上面那個0)放到存儲位置1,也就是i的存儲位置,所以i的值就是0了
          iload_1 //加載位置1上的整數值到棧頂,就是i,因此棧頂的值是0
          iinc 1,1 //把位置1的數,也就是i,自增1,因此i變成了1(注意:iinc指令不會操作堆棧)
          istore_1 //把棧頂的那個數,也就是0,存到位置1,因此i的值是0.

          int i=0;
          i=++i;
          -->
          iconst_0 //把常量0放到棧頂
          istore_1 //把堆棧上的數(上面那個0)放到存儲位置1,也就是i的存儲位置,所以i的值就是0了,棧頂值不變
          iinc 1,1 //把位置1的數,也就是i,自增1,因此i變成了1(注意:iinc指令不會操作堆棧)
          iload_1 //加載位置1的數,也就是i的值,1,到棧頂
          istore_1//把棧頂的值存到位置1,因此i的值就是1了。

          了解字節碼的操作:
          http://blog.csdn.net/BU_BetterYou/archive/2008/06/16/2553108.aspx
          這個問題需要填充N*N個數,所以必須有N*N次操作,從這一層看來,沒有改進的余地。你改進的算法只是減少了循環次數,卻在每次循環中加倍了操作,還增加了很多判斷,我以為,這樣速度反而會慢呢。
          re: 文本中找最長的回文字符串 lanxiazhi 2009-07-25 19:05  
          樓上的朋友,我這是從http://ace.delos.com/usacoprob2?a=ZeOY7JdiFfN&S=calfflac這里貼過來的題目,上面有詳細說明,示例輸入輸出。上面的解答是我自己提供的,因為我覺得java的代碼比c/c++的容易一些(java讓你更專注于算法,而不用考慮很多語言特性,當然速度會慢一些,不過在這種情況下不明顯)。這是一個編程練習平臺,任何人都可以注冊使用,很方便的。
           
          主站蜘蛛池模板: 陵水| 大新县| 乐清市| 松溪县| 玉田县| 金堂县| 桐城市| 赣州市| 修文县| 宕昌县| 牡丹江市| 万安县| 靖西县| 益阳市| 慈利县| 县级市| 牟定县| 泸水县| 洪湖市| 巴东县| 闻喜县| 泾阳县| 江陵县| 黑龙江省| 玉门市| 安多县| 临沂市| 汉沽区| 涟源市| 延吉市| 敦煌市| 巴彦淖尔市| 商河县| 西和县| 太原市| 安徽省| 金乡县| 饶平县| 华坪县| 石渠县| 通江县|