/*
既然你的問題分類是程式語言,想必你是想透過程式輸出你要的結果,那麼最簡單的C就能實現你想要的功能。下面這個就是你所需要的效果,為了能夠便於我們複製輸出結果,我們將顯示結果輸入到檔案中,路徑預設是D:\,檔名為a.txt,同時統計出所有組合的數目。如果需要顯示更多數字的組合可能,可以選擇修改list[]陣列中元素的個數即可。
*/
#include <stdio.h>#include <conio.h>
int n = 0;
void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}
void perm(int list[], int k, int m, FILE *fp)
int i;
if(k > m)
for(i = 0; i <= m; i++)
fprintf(fp, "%d ", list[i]);
fprintf(fp, "\n");
n++;
else
for(i = k; i <= m; i++)
swap(&list[k], &list[i]);
perm(list, k + 1, m, fp);
int main()
FILE *fop = fopen("d:\\a.txt","w");/*開啟檔案*/ ;
int list[] = {1, 2, 3, 4};
perm(list, 0, 3, fop);
fprintf(fop, "total:%d\n", n);
fclose(fop);/*關閉檔案*/
getch();
return 0;
/*
既然你的問題分類是程式語言,想必你是想透過程式輸出你要的結果,那麼最簡單的C就能實現你想要的功能。下面這個就是你所需要的效果,為了能夠便於我們複製輸出結果,我們將顯示結果輸入到檔案中,路徑預設是D:\,檔名為a.txt,同時統計出所有組合的數目。如果需要顯示更多數字的組合可能,可以選擇修改list[]陣列中元素的個數即可。
*/
#include <stdio.h>#include <conio.h>
int n = 0;
void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}
void perm(int list[], int k, int m, FILE *fp)
{
int i;
if(k > m)
{
for(i = 0; i <= m; i++)
fprintf(fp, "%d ", list[i]);
fprintf(fp, "\n");
n++;
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(list, k + 1, m, fp);
swap(&list[k], &list[i]);
}
}
}
int main()
{
FILE *fop = fopen("d:\\a.txt","w");/*開啟檔案*/ ;
int list[] = {1, 2, 3, 4};
perm(list, 0, 3, fop);
fprintf(fop, "total:%d\n", n);
fclose(fop);/*關閉檔案*/
getch();
return 0;
}