算法—实现排列 A(n,m)
生活随笔
收集整理的這篇文章主要介紹了
算法—实现排列 A(n,m)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/* 實現排列A(n,m)*/
#include "stdio.h"
int m,n,a[30];
long s=0;
int main()
{int p(int k);printf("input n(n<10):"); scanf("%d",&n);printf("input m(<1m<=n):"); scanf("%d",&m);p(1); //從第1個數開始 printf("\n總數為:%ld\n",s); //輸出A(n,m)的值return 0;
}
//排列遞歸函數p(k)
int p(int k)
{int i,j,u;if(k<=m){for(i=1;i<=n;i++){a[k]=i; //探索第K個數賦值ifor(u=0,j=1;j<=k-1;j++)if(a[k]==a[j]) //若出現重復數字u=1; //若第K個數不可置,u=1if(u==0) //若第k個數可置,則檢查是否到m個數{if(k==m) //若以到m個數,則打印出一個解{s++;printf(" ");for(j=1;j<=m;j++)printf("%d",a[j]);if(s%10==0) printf("\n");}else p(k+1); //若沒到m個數,則探索下一個P(K+1) } }}return s;
}
總結
以上是生活随笔為你收集整理的算法—实现排列 A(n,m)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《阳岐守风诗》第十一句是什么
- 下一篇: 算法—递归实现 C(m,n)