C語(yǔ)言中組成不重復(fù)的三位數(shù)問(wèn)題
C語(yǔ)言組成不重復(fù)的三位數(shù)
對(duì)于這個(gè)問(wèn)題,我有兩種解決思路
- 第一種較為簡(jiǎn)單
- 第二種較為復(fù)雜
(1)通用思路:根據(jù)數(shù)組中的數(shù)字自由組合成三位數(shù)
(2)找出最小數(shù)和最大數(shù)并以此為循環(huán)邊界(目的在于縮小循環(huán)的范圍,提高效率),之后根據(jù)不斷循環(huán),將不符合要求的數(shù)字排除,在某些題中會(huì)簡(jiǎn)便許多
·由1,2,3,4組成的不重復(fù)的三位數(shù)
(1)通用思路
#include <stdio.h> ? int main() { ?? ?int a[4]={1,2,3,4}; ?? ?int i,j,k,count=0; ?? ?for (i=0;i<4;i++) ?? ?{ ?? ??? ?for (j=0;j<4;j++) ?? ??? ?{ ?? ??? ??? ?for (k=0;k<4;k++) ?? ??? ??? ??? ?if (i!=j&&i!=k&&k!=j) ?? ??? ??? ??? ?printf("%d\n",a[i]*100+a[j]*10+a[k]);? ?? ??? ?} ?? ?} ?? ?return 0; }?
(2)排除思路
#include <stdio.h> ? int main() { ?? ?int a[3],i,j,k; ?? ?for (i=123;i<=432;i++) ?? ?{ ?? ??? ?int word = 1; ?? ??? ?a[0]=i%10;a[1]=i/10%10;a[2]=i/100; ?? ??? ?for (j=0;j<3;j++) ?? ??? ?{ ?? ??? ??? ?if (a[j]==1||a[j]==2||a[j]==3||a[j]==4) ?? ??? ??? ?{ ?? ??? ??? ?for (k=0;k<3&&j!=k;k++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if (a[k]==a[j]) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?word = 0; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ? ? ?} ?? ??? ? ? else ?? ??? ? ? { ?? ??? ??? ? ? ?word = 0; ?? ??? ??? ? ? ?break; ?? ??? ? ? } ?? ??? ? ? ? ? ? if (word == 0) ?? ??? ??? ?break; ?? ?} ? ?? ??? ?if (word) ?? ??? ?printf("%d\n",i); ?? ?} ?? ?return 0; }
·某些題(適用于排除思路)
用1,2,3,.....,9組成三位數(shù)abc,def,ghi,每個(gè)數(shù)字恰好使用一次,要求 abc:def:ghi=1:2:3.按照“abc def ghi”的格式輸出所有解,每行一個(gè)解。
#include <stdio.h> ? int main() { ? ? int abc,def,ghi; ? ? int i,k,a[9],word =1; ? ? for (abc=123;abc<=329;abc++) ? ? { ? ? ? ? def = abc * 2; ? ? ? ? ghi = abc * 3; ? ? ? ? a[0]=abc%10;a[1]=abc/10%10;a[2]=abc/100; ? ? ? ? a[3]=def%10;a[4]=def/10%10;a[5]=def/100; ? ? ? ? a[6]=ghi%10;a[7]=ghi/10%10;a[8]=ghi/100; ? ? ? ? for (k=0;k<9;k++) ? ? ? ? { ? ? ? ? ? ? word = 1; ? ? ? ? ? ? for (i=0;i<9&&i!=k;i++) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if (a[k]==a[i]||a[i]==0) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? word = 0; ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? if (word == 0) ? ? ? ? ? ? break; ? ? ? ? } ? ? ? ? if (word) ? ? ? ? printf("%d,%d,%d\n",abc,def,ghi); ? ? ? ?? ? ? } }
打印1234組成的不重復(fù)三位數(shù)
1、每位數(shù)都遍歷一次,就是個(gè)位出現(xiàn)1234,十位出現(xiàn)1234,百位出現(xiàn)1234
2、去重復(fù),個(gè)位十位百位不能相等
3、復(fù)合式遍歷,統(tǒng)計(jì)這種遍歷得到了多少回
var count = 0; for(i=1;i<=4;i++){ for(j=1;j<=4;j++){ for(k=1;k<=4;k++){ if(i!=j && j!=k && k!=i){ count++; console.log(i+""+j+""+k); } } } } console.log("這樣的三位數(shù)有"+count+"個(gè)");
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談C++基類(lèi)的析構(gòu)函數(shù)為虛函數(shù)
本文重點(diǎn):應(yīng)該為多態(tài)基類(lèi)聲明虛析構(gòu)器。一旦一個(gè)類(lèi)包含虛函數(shù),它就應(yīng)該包含一個(gè)虛析構(gòu)器。如果一個(gè)類(lèi)不用作基類(lèi)或者不需具有多態(tài)性,便不應(yīng)該為它聲明虛析構(gòu)器。2015-10-10C語(yǔ)言實(shí)現(xiàn)掃雷游戲詳細(xì)代碼
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)掃雷游戲的具體步驟和詳細(xì)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11一個(gè)string類(lèi)的簡(jiǎn)單實(shí)現(xiàn)案例
下面小編就為大家?guī)?lái)一篇一個(gè)string類(lèi)的簡(jiǎn)單實(shí)現(xiàn)案例。小編覺(jué)得挺不錯(cuò)的現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01C++類(lèi)的靜態(tài)成員初始化詳細(xì)講解
通常靜態(tài)數(shù)據(jù)成員在類(lèi)聲明中聲明,在包含類(lèi)方法的文件中初始化.初始化時(shí)使用作用域操作符來(lái)指出靜態(tài)成員所屬的類(lèi).但如果靜態(tài)成員是整型或是枚舉型const,則可以在類(lèi)聲明中初始化2013-09-09