//組合
//1---5里面5個(gè)數(shù)選出來(lái)3個(gè)
#include<iostream>using namespace std;int v[6] = { 0 };int a[4];int sum = 0;void f(int num,int flag, int n){ if (n == 3){ sum++; for (int l = 0; l < 3; l++) PRintf("%d ", a[l]); printf("/n"); } else{ for (int j = 1; j < 6; j++){ if (v[j] == 0&&j>flag){ a[n] = j; v[j] = 1; f(j+1,j, n + 1); a[n] = 0; v[j] = 0; } } }}int main(){ f(0,0, 0); printf("sum=%d", sum); return 0;}![]()
//排列
//在選取的基礎(chǔ)上全排列,其實(shí)上個(gè)代碼改一下就行
#include<iostream>using namespace std;int v[6] = { 0 };int a[4];int sum = 0;void f( int num,int n){ if (n == 3){ sum++; for (int l = 0; l < 3; l++) printf("%d ", a[l]); printf("/n"); } else{ for (int j = 1; j < 6; j++){ if (v[j] == 0 ){ a[n] = j; v[j] = 1; f( j, n + 1); a[n] = 0; v[j] = 0; } } }}int main(){ f( 0, 0); printf("sum=%d", sum); return 0;}//全排列#include<iostream>using namespace std;int b[4] = { 1, 2, 3};int v[4] = { 0 };int a[3];void f(int i){ if (i == 3){ for (int i = 0; i < 3; i++) printf("%d ", b[i]); printf("/n"); } else{ for (int j = i; j < 3; j++){ swap(b[i], b[j]); f(i + 1); swap(b[i], b[j]); } }}int main(){ f( 0); return 0;}這里如果數(shù)字是1 2 2 ,就會(huì)出現(xiàn)重復(fù)。接下來(lái)給個(gè)去重便可#include<iostream>using namespace std;int b[4] = { 1, 2, 2};int v[4] = { 0 };int a[3];int pd(int i, int j){ for (int k = i; k < j;k++) if (b[k] == b[j]) return 0; return 1;}void f(int i){ if (i == 3){ for (int i = 0; i < 3; i++) printf("%d ", b[i]); printf("/n"); } else{ for (int j = i; j < 3; j++){ if (pd(i, j)){ swap(b[i], b[j]); f(i + 1); swap(b[i], b[j]); } } }}int main(){ f( 0); return 0;}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注