fengrunsheng
生活中本不缺少美,缺少的是發(fā)現(xiàn)美的眼睛!
級(jí)別: 網(wǎng)絡(luò)英雄
|
我認(rèn)識(shí)了一個(gè)程序員,講到我們畢業(yè)生出來(lái)工資大概多少的時(shí)候,他出了一道題,說(shuō),這個(gè)題目的月薪是1000 ,如果做不出 說(shuō)明你現(xiàn)在可能還需要努力突破¥1000 ,而不是突破¥5000 請(qǐng)用程序打印出a b c d e f g h i j k l這十二個(gè)字符的全部組合,每種組合占一行 你的結(jié)果可能會(huì)是 a b c d e a b c d f …… 請(qǐng)用任何你熟悉的語(yǔ)言寫出程序 10分鐘內(nèi)完成, |
---|---|
|
659888714
沒(méi)有所謂失敗,除非你不再嘗試。
級(jí)別: 略有小成
|
諸位大仙,近幾天上網(wǎng)不方便,我自己搞了個(gè)利用循環(huán)嵌套的,一看就太拉雜了慚愧啊。 等隨后再總結(jié)一下大家的方法,謝謝啦 以下我弄得代碼暫時(shí)以數(shù)字代替字母,當(dāng)排到12個(gè)數(shù)的時(shí)候就要算半個(gè)多小時(shí)了。 看來(lái)要排出26個(gè)字母真的不可行了。 //////////////////////////// #include <time.h> #include <windows.h> #include<stdio.h> main() { time_t t_start, t_current; FILE * fp ; fp=fopen("DATA.TXT","w"); int a,b,c,d,e,f,g,h,i,j,k,l; const int num = 12 ; fprintf(fp,"\n"); t_start = time(NULL) ; for(a=1;a<=num;a++) {//外層for if( 1 ) // num之1 fprintf(fp,"%d\n",a); for(b=1;b<=num;b++) {//2層for if( a<b ) // num之2 fprintf(fp,"%d,%d\n",a,b); for (c=1;c<=num;c++) {//3層for if( a<b && b<c ) // num之3 fprintf(fp,"%d,%d,%d\n",a,b,c); for (d=1;d<=num;d++) {//4層for if( a<b && b<c && c<d ) // num之4 fprintf(fp,"%d,%d,%d,%d\n",a,b,c,d); /////////計(jì)算完成百分比和時(shí)間////////// t_current = time(NULL) ; printf("已用時(shí)%.0f秒,完成%2.1f%%\r", difftime(t_current,t_start),(float)a/num * 100 - 0.1 ); ////////////////////////////////////// for (e=1;e<=num;e++) {//5層for if( a<b && b<c && c<d && d<e ) // num之5 fprintf(fp,"%d,%d,%d,%d,%d\n",a,b,c,d,e); for (f=1;f<=num;f++) {//6層for if( a<b && b<c && c<d && d<e && e<f ) // num之6 fprintf(fp,"%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f); for (g=1;g<=num;g++) {//7層for if( a<b && b<c && c<d && d<e && e<f && f<g ) // num之7 fprintf(fp,"%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g); for (h=1;h<=num;h++) {//8層for if( a<b && b<c && c<d && d<e && e<f && f<g && g<h ) // num之8 fprintf(fp,"%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g,h); for (i=1;i<=num;i++) {//9層for if( a<b && b<c && c<d && d<e && e<f && f<g && g<h && h<i ) // num之9 fprintf(fp,"%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g,h,i); for (j=1;j<=num;j++) {//10層for if( a<b && b<c && c<d && d<e && e<f && f<g && g<h && h<i && i<j ) // num之10 fprintf(fp,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g,h,i,j); for (k=1;k<=num;k++) {//11層for if( a<b && b<c && c<d && d<e && e<f && f<g && g<h && h<i && i<j && j<k ) // num之11 fprintf(fp,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g,h,i,j,k); }//11層for }//10層for }//9層for }//8層for }//7層for }//6層for }//5層for }//4層for }//3層for }//2層for }//外層for printf("計(jì)算全部完成,總計(jì)用時(shí)%.0f秒。\n", difftime(t_current,t_start)); printf("結(jié)果保存在程序所在目錄之下。\n"); } |
---|---|
本帖最近評(píng)分記錄: |
yamqq
雅馬哈,愛普生,電裝機(jī)器人。
級(jí)別: 網(wǎng)絡(luò)英雄
|
呵呵,除非這是搞底層研究的,搞應(yīng)用還是工藝為王。 |
|
---|---|---|
|
fengrunsheng
生活中本不缺少美,缺少的是發(fā)現(xiàn)美的眼睛!
級(jí)別: 網(wǎng)絡(luò)英雄
|
多個(gè)嵌套循環(huán)的辦法是最容易想到的,并且是最笨的. 為什么不用"堆棧加遞歸" |
---|---|
|
fengrunsheng
生活中本不缺少美,缺少的是發(fā)現(xiàn)美的眼睛!
級(jí)別: 網(wǎng)絡(luò)英雄
|
<script> var stack = new Array("a","b","c","d","e","f","g","h","i","j","k","l"); var buff = new Array(); function getComb(stack, buff) { if(stack.length + buff.length < 5) return; //字母不夠了,不用再試 while(stack.length > 0) //字母還沒(méi)用完 { buff.push(stack.shift()); //選取字母 if(buff.length < 5) //還沒(méi)到5個(gè)字母 { getComb(stack.slice(0), buff.slice(0)); //繼續(xù)選取 } else if(buff.length == 5) { document.write(buff+"<br>"); //夠數(shù)量了,輸出 } buff.pop(); //丟棄用過(guò)的字母 } return; } getComb(stack, buff); </script> |
---|---|
|
奇通科技
級(jí)別: 探索解密
|
搞 怎么復(fù)雜干嘛,直接和老板開價(jià)你的能力值多少錢,老板接受你就值多少 |
---|---|
|