<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>
算出来的结果是下面的,程序再最下面,看看对不对
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>
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>