求一个算法。

2025-01-02 03:59:55
推荐回答(5个)
回答1:

下面是我想的:你看看吧,还不会就问我
定义N为100; //N>n
定义a[N]={0};
输入 n ;
从键盘输入的n个数存入数组a[N];//数组的前n个数
for i=0 to n-1
遍历数组,冒泡法从小到大排列,记录数组中不同数的个数f,和是否有0,用t记,t=1 表示有,并将这f个数存入数组b[N]中;
由排列可得:
三位数个数s=f*(f-1)*(f-2)-t*(f-1)(f-2);
设三位数百位为x,十位为y,个数为z
下面输出说有的三位数程序:
for i=0 to f-1 //即for(i=0;i<=f-1;i++)
if(b[i]){
x=b[i];
for j=0 to f-1
if(j!=i){
y=b[j];
for l=0 to f-1
if(l!=i&&l!=j){
z=b[l];
cout<<"xyz="< }
}
}

回答2:

#include
#define MAX 4 //这里的MAX可以在3到9之间随意定义
void main()
{

int a,b,c,d=0,i,shuzu1[MAX],shuzu2[3],shu,flag=0;
long int e=MAX*MAX*MAX;
int shuzu3[MAX*MAX*MAX];
printf("please input %d numbers:\n",MAX);
for(a=0;a scanf("%d",&shuzu1[a]);
for(a=0;a for(b=0;b for(c=0;c {
shuzu2[0]=shuzu1[a];
shuzu2[1]=shuzu1[b];
shuzu2[2]=shuzu1[c];
shu=100*shuzu2[0]+10*shuzu2[1]+shuzu2[2];
shuzu3[d]=shu;
d++;
flag=0;
if(shuzu2[0]!=shuzu2[1]&&shuzu2[0]!=shuzu2[2]&&shuzu2[1]!=shuzu2[2])
{

for(i=0;i {
if(shu==shuzu3[i])
{
flag=1;

}
}
if(flag==0&&shu>100)
printf("%d\t",shu);
}
}

printf("\n");
}

回答3:

这个不是排列的问题嘛

从4个数中取3个数...公式是P(4, 3)

4! / (4 -3)!

回答4:

用一个数组接收输入的数字,用一个3层的for循环从数组中确定出3个数字,再用一个3层的for循环交叉输出,循环中要用if判断首位是否为0,不是0就输出,并用t记录个数。这就可以了。

回答5:

c语言?没学过