例:
0:000
1:001,010,100
2:002,011,020,101,110,200
.
.
.
n:.....n<=27(N为和数值)

解决方案 »

  1.   

    hbhbhbhbhb1021高手,一看就看出来了,呵呵。
      

  2.   

    效率还可以接受,比直接循环要好多了
    算出来的结果是下面的,程序再最下面,看看对不对
    000
    100,010,001
    200,110,101,020,011,002
    300,210,201,120,111,102,030,021,012,003
    400,310,301,220,211,202,130,121,112,103,040,031,022,013,004
    500,410,401,320,311,302,230,221,212,203,140,131,122,113,104,050,041,032,023,014,005
    600,510,501,420,411,402,330,321,312,303,240,231,222,213,204,150,141,132,123,114,105,060,051,042,033,024,015,006
    700,610,601,520,511,502,430,421,412,403,340,331,322,313,304,250,241,232,223,214,205,160,151,142,133,124,115,106,070,061,052,043,034,025,016,007
    800,710,701,620,611,602,530,521,512,503,440,431,422,413,404,350,341,332,323,314,305,260,251,242,233,224,215,206,170,161,152,143,134,125,116,107,080,071,062,053,044,035,026,017,008
    900,810,801,720,711,702,630,621,612,603,540,531,522,513,504,450,441,432,423,414,405,360,351,342,333,324,315,306,270,261,252,243,234,225,216,207,180,171,162,153,144,135,126,117,108,090,081,072,063,054,045,036,027,018,009
    910,901,820,811,802,730,721,712,703,640,631,622,613,604,550,541,532,523,514,505,460,451,442,433,424,415,406,370,361,352,343,334,325,316,307,280,271,262,253,244,235,226,217,208,190,181,172,163,154,145,136,127,118,109,091,082,073,064,055,046,037,028,019
    920,911,902,830,821,812,803,740,731,722,713,704,650,641,632,623,614,605,560,551,542,533,524,515,506,470,461,452,443,434,425,416,407,380,371,362,353,344,335,326,317,308,290,281,272,263,254,245,236,227,218,209,191,182,173,164,155,146,137,128,119,092,083,074,065,056,047,038,029
    930,921,912,903,840,831,822,813,804,750,741,732,723,714,705,660,651,642,633,624,615,606,570,561,552,543,534,525,516,507,480,471,462,453,444,435,426,417,408,390,381,372,363,354,345,336,327,318,309,291,282,273,264,255,246,237,228,219,192,183,174,165,156,147,138,129,093,084,075,066,057,048,039
    940,931,922,913,904,850,841,832,823,814,805,760,751,742,733,724,715,706,670,661,652,643,634,625,616,607,580,571,562,553,544,535,526,517,508,490,481,472,463,454,445,436,427,418,409,391,382,373,364,355,346,337,328,319,292,283,274,265,256,247,238,229,193,184,175,166,157,148,139,094,085,076,067,058,049
    950,941,932,923,914,905,860,851,842,833,824,815,806,770,761,752,743,734,725,716,707,680,671,662,653,644,635,626,617,608,590,581,572,563,554,545,536,527,518,509,491,482,473,464,455,446,437,428,419,392,383,374,365,356,347,338,329,293,284,275,266,257,248,239,194,185,176,167,158,149,095,086,077,068,059
    960,951,942,933,924,915,906,870,861,852,843,834,825,816,807,780,771,762,753,744,735,726,717,708,690,681,672,663,654,645,636,627,618,609,591,582,573,564,555,546,537,528,519,492,483,474,465,456,447,438,429,393,384,375,366,357,348,339,294,285,276,267,258,249,195,186,177,168,159,096,087,078,069
    970,961,952,943,934,925,916,907,880,871,862,853,844,835,826,817,808,790,781,772,763,754,745,736,727,718,709,691,682,673,664,655,646,637,628,619,592,583,574,565,556,547,538,529,493,484,475,466,457,448,439,394,385,376,367,358,349,295,286,277,268,259,196,187,178,169,097,088,079
    980,971,962,953,944,935,926,917,908,890,881,872,863,854,845,836,827,818,809,791,782,773,764,755,746,737,728,719,692,683,674,665,656,647,638,629,593,584,575,566,557,548,539,494,485,476,467,458,449,395,386,377,368,359,296,287,278,269,197,188,179,098,089
    990,981,972,963,954,945,936,927,918,909,891,882,873,864,855,846,837,828,819,792,783,774,765,756,747,738,729,693,684,675,666,657,648,639,594,585,576,567,558,549,495,486,477,468,459,396,387,378,369,297,288,279,198,189,099
    991,982,973,964,955,946,937,928,919,892,883,874,865,856,847,838,829,793,784,775,766,757,748,739,694,685,676,667,658,649,595,586,577,568,559,496,487,478,469,397,388,379,298,289,199
    992,983,974,965,956,947,938,929,893,884,875,866,857,848,839,794,785,776,767,758,749,695,686,677,668,659,596,587,578,569,497,488,479,398,389,299
    993,984,975,966,957,948,939,894,885,876,867,858,849,795,786,777,768,759,696,687,678,669,597,588,579,498,489,399
    994,985,976,967,958,949,895,886,877,868,859,796,787,778,769,697,688,679,598,589,499
    995,986,977,968,959,896,887,878,869,797,788,779,698,689,599
    996,987,978,969,897,888,879,798,789,699
    997,988,979,898,889,799
    998,989,899
    999<script language=javascript>
    var temp=new Array()
    temp.push("000");var result=new Array()
    result.push(temp)
    var str="";
    for(var i=1;i<28;i++)
    {
    var temp2=new Array();
    var temp4=new Array();
    for(var j=0;j<temp.length;j++)
    {
    temp3=temp[j].split("")
    if(temp3[0]<9){
    str=(parseInt(temp3[0])+parseInt(1))+temp3[1]+temp3[2] if(!temp4[str]){
    temp4[str]=1
    temp2.push(str)
    }
    }
    temp3=temp[j].split("")
    if(temp3[1]<9){
    str=temp3[0]+(parseInt(temp3[1])+parseInt(1))+temp3[2] if(!temp4[str]){
    temp4[str]=1
    temp2.push(str)
    }
    }
    temp3=temp[j].split("")
    if(temp3[2]<9){
    str=temp3[0]+temp3[1]+(parseInt(temp3[2])+parseInt(1)) if(!temp4[str]){
    temp4[str]=1
    temp2.push(str)
    }
    }
    }
    temp=temp2
    result.push(temp2)
    }
    document.write(result.join("<br>"))
    </script>
      

  3.   

    <script>
    function getThreeNumber(n){
    var newArray=new Array();
    var num=0;
    var first;
    var minFirst=n-2*9<0?0:n-2*9;
    var maxFirst=n>9?9:n;
    for(first=minFirst;first<=maxFirst;first++){
    var middle;
    var minMiddle=Math.max(n-first-9<0?0:n-first-9,first);
    var maxMiddle=n-first>9?9:n-first;
    for(middle=minMiddle;middle<=maxMiddle;middle++){
    var last;
    var minLast=Math.max(n-first-middle,middle);
    var maxLast=n-first-middle;
    for(last=minLast;last<=maxLast;last++){
    newArray[num]=""+first+middle+last;
    num++;
    }
    }
    }
    return newArray;
    }
    function getC(str){
    var newArray=new Array();
    var num=0;
    var arr=getNumberLoop(str);
    var len=arr.length;
    for(var i=len-1;i>=0;i--){
    var item=arr.splice(i,1);
    if(arr.join(",").indexOf(item+"")==-1){
    newArray[num]=item;
    num++;
    }
    }
    return newArray;
    }
    function getNumberLoop(str){
    if(str.length<2){
    return new Array(str);
    }else if(str.length==2){
    var newArray=new Array();
    newArray[0]=str.charAt(0)+str.charAt(1);
    newArray[1]=str.charAt(1)+str.charAt(0);
    return newArray;
    }else{
    var Char=str.charAt(0);
    var str=str.slice(1);
    var arr=getNumberLoop(str);
    var newArray=new Array();
    for(var i=0;i<arr.length;i++){
    for(var j=0;j<=arr[i].length;j++){
    var sliceStr=arr[i];
    sliceStr=sliceStr.slice(0,j)+Char+sliceStr.slice(j);
    newArray[i*(arr[i].length+1)+j]=sliceStr;
    }
    }
    return newArray;
    }
    }function getAll(n){
    var arr=getThreeNumber(n);
    var newArray=new Array();
    for(var i=0;i<arr.length;i++){
    newArray=newArray.concat(getC(arr[i]+""));
    }
    return newArray;
    }var oldDate=new Date();
    var strArr=new Array();
    var str="";
    for(var i=0;i<=27;i++){
    strArr.push("n="+i+"时:"+getAll(i).join()+"<br>");
    }
    document.write(strArr.join());
    var curDate=new Date(); 
    alert("用时:"+(curDate-oldDate));//94
    </script>