数学趣题——数字的全排列
2010-05-26 10:13
239 查看
应用递归思想求全排列
#include <stdio.h>
#define max 100
void Perm(int a[], int n , int s , int r[], int m)
{
int i, j, k, flag = 0;
int b[max];/*数组b存放子序列*/
for(i = 0; i < n; i++)
{
flag = 1;
r[s] = a[i];/*复制数列a中第i个元素到数组r*/
j = 0;
for(k = 0; k < n; k++)/*产生子序列b*/
{
if(i != k)
{
b[j] = a[k];
j++;
}
}
Perm(b, n - 1, s + 1, r, m); /*全排列子序列b*/
}
if(flag == 0)
{ /*得到一种排列结果*/
printf("\n");
for(k = 0; k < m; k++)
printf("%d ", r[k]); /*输出存放排列结果的数组r中的内容*/
printf("\n");
}
}
int main()
{
int a[max] , r[max];
int i, n;
printf("Please input the number of digit inthe array\n");
scanf("%d", &n); /*输入待排列的数列中元素的个数*/
printf("Please input a string for array\n");
for(i = 0; i < n; i++)/*输入数列中的元素(整数)*/
scanf("%d", &a[i]);
Perm(a, n, 0, r, n);/*全排列操作*/
return 0;
}
相关文章推荐
- 数学趣题——判断回文数字
- 数学趣题——填数字游戏
- 数学趣题——数字翻译器
- F#与数学(I) – PowerPack中的数字类型
- 数字的全排列 问题
- 约瑟夫环的数学推导、数学方法求最后出圈的数字、循环单链表求所有出圈数字顺序
- 【100题】第六十六~第七十题(颠倒栈、扑克牌顺子和掷骰子概率、数字数组排成最小数、求旋转数组中最小值、全排列)
- [乱搞 分类讨论 数学] 51Nod 1131 覆盖数字的数量
- <hdu - 1600 - 1601> Leftmost Digit && Rightmost Digit 数学方法求取大位数单位数字
- 获得一个数组中所有元素进行的全排列,获得其中最小的数字
- HDU 2178 猜数字 数学题
- 数学练习二:互联网数字游戏
- 美研究:数学能力与天生数字直觉有关
- 习题三:数字和数学计算
- Permutations 数字的全排列
- 【BZOJ5074】[Lydsy十月月赛]小B的数字 数学
- [水+数学] fzu oj 2193 So Hard and 2191 完美的数字
- 笨方法学python--数字和数学计算
- 数学冷知识:不断取英文表达的字符数,最后总会得到数字4
- 能被N整除的数字的特征(数学知识点)