c++ 请教编一个小程序

来源:百度知道 编辑:UC知道 时间:2024/07/02 09:00:58
算0~9不重复5位排列,有多少个,然后打出来
输入0~9任意两个数字,
一个控制排列数的位数,一个是内容个数.
比如 10数5位
9个数5位
8个数4位
…………
比如8个数4位 其中8和4可以随便是0~9中的任意数
输入 8和4
输出
1234
1567
1678

2345
2567
共……个
在比如 5个数3位
输入 5和3
输出
123
132
213
……
共…个

偶 就新手 麻烦具体点

最好全部写出来

编译通过的

还不清楚 加我 QQ340041068 验证了写 "小程序"

题目不是很清楚 依我的理解编程如下:
#include<iostream.h>
int count=0;
void f(int a,int b,char *sn,char *result,int r)
{
int i,j;
if(b==1)//b=1时说明递归到还剩一位数字,所以要处理
{
count+=a;
for(i=0;i<a;i++)
{
result[r]=sn[i];//把值放到结果中
result[r+1]='\0';//因为是最后一位,所以要加结束符
cout<<result<<" ";
}
cout<<endl;
return;//返回
}
for(i=0;i<a;i++)
{
if(r==0&&sn[i]=='0')
//第一位数字不能为0,所以要单独处理一下
continue;
result[r]=sn[i];
char *num=new char[a-1];
int c=0;
for(j=0;j<a;j++)
{
if(i==j)
continue;
num[c++]=sn[j];//把数值去掉使用过的数字,仅留其他
}
f(a-1,b-1,num,result,r+1);
//已经处理了一位,所以a与b都减1,r+1标志result将要赋值位
delete []num;
}
}
int main()
{
int i;
int a,b;
char sn[]="1234567890";
cin>>a>>b;
if