一个关于数字排列的问题?

sky2000 2000-02-16 09:19:00
请教一下各位网友:
我想将0-9中的任意六个数字按随机顺序排列, 要求不遗漏,不重复,如123456,653248(6个数字不重复出现)并输出到一个文件中去。请提供源程序, 最好是VFP的。

(这是一道考试题, 敬请帮忙,不胜感激!)
...全文
169 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WHQ 2000-02-16
  • 打赏
  • 举报
回复
#include <stdio.h>
// N个数的全排列:

typedef void (*MyOutputFunc)(int numb, char out[]);

void Iterate(int n, char in[], char out[], int nmax, int& numb, MyOutputFunc f)
{
if( n == 0 )
{
f(numb++, out);
return;
}
for(int i = 0; i < nmax; i++)
{
if( in[i] != -1 )
{
out[nmax-n] = in[i];
in[i] = -1;
Iterate(n-1, in, out, nmax, numb, f);
in[i] = out[nmax-n];
}
}
}

void PrintP(int numb, char out[])
{
printf("[%08d]: %s\n", numb, out);
}

#define MAX 62
main()
{
char in[MAX+1], out[MAX+1];
int numb = 0;
for( int i = 0; i < MAX; i++ )
{
if( i < 26 ) in[i] = 'a'+i;
else if( i < 52 ) in[i] = 'A'+i-26;
else in[i] = '0'+i-52;
out[i] = -1;
}
in[i] = out[i] = 0;
Iterate(MAX, in, out, MAX, numb, PrintP);
printf("\nAll items are %d\n", numb);
return 0;
}
feng 2000-02-16
  • 打赏
  • 举报
回复
10个数字中取6个数字排列,有10!/4!种排列。可以用递归来实现。
char[] arrange(char[] myA,int K)
//返回数组MyA在K=k时的所有排列的数组.
{
char[] theA;
int count;

if(K=1)
//如果K=1,返回数组MyA.
return myA;
//否则,返回myA中每个数myA[i]和剩下的数在K=k-1夏的所有排列.
else
{
count=0;
for(int i=0;i<Length;i++)
//Length是myA中元素的个数.
//想办法取到它.
{
char[] restA;
char[] returnA;
restA=myA-i;
//restA是myA中除去第i个元素的数组.
//递归调用
//取restA在K-1时的所有组合.
returnA=arrange(restA,K-1);
for(int j=0;j<LengthOfReturnA;j++)
{
//myA中每个数myA[i]和returnA的排列
theA[count]=myA[i]+returnA[j];
count++;
}
}
return theA;
}
}

active 2000-02-16
  • 打赏
  • 举报
回复
for i1=0 to 9
for i2=0 to 9
for i3=0 to 9
for i4=0 to 9
for i5=0 to 9
for i6=0 to 9

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧