求教c语言指定数字序列的指定个数排序比如说:0123456789(不重复)所有4位数的取法或者所有5位数的取法! C语言编程题,求解
1-8\u6570\u7ec4\u4e0d\u91cd\u590d\u7ec4\u62104\u4f4d\u6570\u7684\u5bc6\u7801\u6ca1\u6709\u5148\u540e\u987a\u5e8f\u6709\u54ea\u4e9b\u6ca1\u6709\u987a\u5e8f\uff0c\u5c31\u662f\u516b\u90094\u7684\u7ec4\u5408\u95ee\u9898\u30028*7*6*5/\uff084*3*2*1\uff09=70\u79cd
#include #include void outNum(int j,int k){ int absk = abs(k); if(absk==1 && j!=1 && j!=0) { printf("x%d",j); } else if(absk==1 && j!=0) { printf("x"); } else if(absk==1) { printf("%d",absk); } else if(j==0) { printf("%d",absk); } else if(j==1) { printf("%dx",absk); } else { printf("%dx%d",absk,j); } } int main(){ int num[101] = { (0) }; int cut = 0; int ent = 0; int i,j,k; while(cut -1;i--) { j=i; k=num[j]; if(k!=0) { ent++; if(cut==2) { if(k<0) printf("-"); outNum(j,k); cut ++; } else { if(k<0) { printf("-"); outNum(j,k); } else { printf("+"); outNum(j,k); } } } } if(ent==0) printf("0"); return 0;}
#include "stdio.h"
int main()
{
int i,j,m,n,count=0;
int a[9]={1,2,3,4,5,6,7,8,9};
for(i=1;i<10;i++)
for(j=1;j<10;j++)
for(m=1;m<10;m++)
for(n=1;n<10;n++)
if(!(i==j||j==m||m==n||i==m||i==n||j==n))
{
printf("%d%d%d%d
",a[i-1],a[j-1],a[m-1],a[n-1]);
count++;
}
printf("总排序方法:%d
",count);
}
可以看到,总的排序方式是3024=9*8*7*6
根据排列组合的知识可以知道,这就相当于9个数中任意找4个出来排序的方法,也就是C94
结果正确。
注意结果一共有 3024行,我只截了一部分。
01转换法
本程序的思路是开一个数组,其下标表示1到n个数,数组元素的值为1表示其代表的数被选中,为0则没选中。
首先初始化,将数组前n个元素置1,表示第一个组合为前n个数。
然后从左到右扫描数组元素值的“10”组合,找到第一个“10”组合后将其变为“01”组合,同时将其左边的所有“1”全部移动到数组的最左端。
当第一个“1”移动到数组的n-m的位置,即n个“1”全部移动到最右端时,就得到了最后一个组合。
例如求5中选3的组合:
1 1 1 0 0 //1,2,3
1 1 0 1 0 //1,2,4
1 0 1 1 0 //1,3,4
0 1 1 1 0 //2,3,4
1 1 0 0 1 //1,2,5
1 0 1 0 1 //1,3,5
0 1 1 0 1 //2,3,5
1 0 0 1 1 //1,4,5
0 1 0 1 1 //2,4,5
0 0 1 1 1 //3,4,5
没太看懂你说的意思。不知是否和我理解的一样.
有这样的做法:
例如有字符串a[100]="1234455152515351";
可以sscanf(a,"%4d",&k);
那么k=1234;
绛旓細include<stdio.h> int main(){int i;for(i=1;i<=35;i++){ printf("%5d",i);if(i%7==0)printf("\n");} return 0;}
绛旓細绗簩涓狪F琛ㄧず锛氬悗涓や釜鏁板瓧姣旇緝锛屽皬鐨勬帓鍓嶉潰锛涙澶9銆8婊¤冻IF锛屾墽琛孖F璇彞锛涗氦鎹綅缃彉鎴7銆8銆9銆俤鍦绋嬪簭閲屽彧鏄捣鍒颁竴涓殏鏃跺瓨鍌ㄦ暟鎹殑浣滅敤銆傜涓変釜IF琛ㄧず锛氾紙濡傛灉鎵цIF锛岀敓鎴愮殑鏂板簭鍒楋級澶村熬涓や釜鏁板瓧姣旇緝锛屽皬鐨勬帓鍓嶉潰锛涙澶7銆9涓嶆弧瓒虫潯浠讹紝涓嶆墽琛孖F 璇彞銆傛渶鍚庤緭鍑鸿繖涓敓鎴搴忓垪鐨涓棿鏁帮紝涔熷氨鏄...
绛旓細include<stdio.h> main(){int N,m,a,c,i;scanf("%d%d",&N,&m);for(c = i = 0; i < N; i ++){scanf("%d",&a);if(a == m) c++;}printf("%d\n", c);}
绛旓細include <iostream> using namespace std;void main(){ int t;int k;int*a;cin>>t;while(t--){ cin>>k;a=new int[k];for(int i=0;i<k;i++){ cin>>a[i];} int sum=0;sum=sum+a[0];for(int j=0;j<k;j++){ if(a[j+1]>a[j])sum=sum+a[j+1];else { cout...
绛旓細杩欎釜搴忓垪鏄敱浠ヤ笅瑙勫緥鏋勬垚鐨勶細绗竴涓鏁板瓧鏄 5銆備粠绗簩涓暟瀛楀紑濮嬶紝姣忎釜鏁板瓧鐨勫兼槸鍓嶄竴涓暟瀛楃殑鐩稿弽鏁颁箻浠 11銆傚彲浠ヤ娇鐢ㄥ惊鐜拰鏉′欢璇彞鏉ヨ绠楄繖涓搴忓垪鐨鍜屻備互涓嬫槸涓涓娇鐢 C 璇█缂栧啓鐨勭ず渚嬩唬鐮:include <stdio.h>int main() { int n = 5; // 绗竴涓暟瀛 int sign = -1; // 绗...
绛旓細棰樼洰锛氳瘯缂栧啓涓涓绋嬪簭瀹屾垚锛氭湁15涓暟鎸変粠涓嬪埌澶х殑椤哄簭瀛樻斁鍦ㄤ竴涓暟缁勪腑锛庤緭鍏ヤ竴涓暟锛岃姹傛姌鍗婃煡鎵炬硶鎵惧嚭璇ユ暟鏄暟缁勪腑绗嚑涓厓绱犵殑鍊硷紟濡傛灉璇ユ暟涓嶅湪鏁扮粍涓紝杈撳嚭鈥滀笉鍦ㄨ〃銆===涓嬮潰鏄C浠g爜锛屽叾涓暟缁勬病鏈夎璁′负褰曞叆锛岃屾槸鍥哄畾鏁扮粍=== //杈撳嚭鐨搴忓垪鏄粠0寮濮嬬畻鐨勶紝涔熷氨鏄緭鍑虹殑鏄墍鍦ㄦ暟缁勭殑绱㈠紩...
绛旓細include "stdio.h"void main(){ long i,n,a[10];char c;for(i=0;i<10;i++) a[i]=0;printf("please input a number n:");scanf("%ld",&n);getchar();for(i=0;i<n;i++){ c=getchar();a[c-'0']++; /* 璁板綍0-9鏁板瓧鍑虹幇鐨勬鏁 } for(i=0;i<10;i++)if(a[i]...
绛旓細C璇█涓敓鎴1涓0鍒1鐨勯殢鏈烘暟鍙互鎵ц璇彞锛歠loat b=rand()/(RAND_MAX+1.0);瑙f瀽锛氭爣鍑咰搴撲腑鍑芥暟rand锛堬級鍙互鐢熸垚0~RAND_MAX涔嬮棿鐨勪竴涓殢鏈烘暟锛屽叾涓璕AND_MAX 鏄痵tdlib.h 涓畾涔夌殑涓涓暣鏁帮紝瀹冧笌绯荤粺鏈夊叧銆俽and锛堬級鍑芥暟娌℃湁杈撳叆鍙傛暟锛岀洿鎺ラ氳繃琛ㄨ揪寮弐and锛堬級鏉ュ紩鐢紱鐢ㄥ嚱鏁皉and鍙栧緱鐨勯殢鏈烘暟闄や互(...
绛旓細1锛2锛3锛5锛8锛13锛21 ... 浠庣涓夐」寮濮嬶紝F(n)=F(n-1)+F(n-2)锛岀鍚堟枑娉㈤偅濂戞暟鍒楃壒寰併傛湰棰樼殑鍒嗘暟搴忓垪锛屼互涓婅堪鏁板垪鐨勭n椤逛綔涓簄椤圭殑鍒嗘瘝锛屼互n+1椤逛綔涓簄椤圭殑鍒嗗瓙銆備笉鎳C璇█銆備竴鑸潵璇达紝鍒嗘暟璁$畻鐨勭粨鏋滐紝搴旇浠ュ垎鏁板舰寮忕簿纭〃杈俱傚啓浜嗕竴娈礷ortran浠g爜锛岃绠楄繖涓暟鍒楀墠20椤圭殑鍜屻俿um =...
绛旓細int i;for(i = 1; i <= 6; i++){ printf("%d ", i);} return 0;} ```浠ヤ笂浠g爜涓紝鎴戜滑瀹氫箟浜嗕竴涓彉閲廼锛屽苟涓旈氳繃for寰幆璇彞杩涜浜6娆¤凯浠c傛瘡娆¤凯浠f椂锛屽皢鍙橀噺i鐨勫艰緭鍑哄埌灞忓箷涓婏紝骞跺湪杈撳嚭鍚庢坊鍔犱竴涓┖鏍笺傛敞鎰忥紝杩欓噷浣跨敤鐨勬槸灏忎簬绛変簬绗﹀彿锛<=锛夛紝杩欐槸鍥犱负鎴戜滑瑕佽緭鍑轰粠1鍒6鐨鏁...