求解用0--9这十个数字可以组成多少无重复的三位数?的算法 ,请求高手帮忙!

寻水载渡 2008-04-19 09:51:54
希望写详细点,谢谢
...全文
1869 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgmary 2008-05-11
  • 打赏
  • 举报
回复
648个

#include<iostream.h>
void main()
{
int x,y,z; // 定义个位、十位、百位
int i=0; // 计数器
for(x=1;x<=9;x++) // 百位不能为0,从1开始循环
for(y=0;y<=9;y++)
for(z=0;z<=9;z++)
if((x!=y)&&(x!=z)&&(y!=z)) // 无重复
{
i++;
cout<<x<<y<<z<<"\t"; // 如果不需要输出具体数据可以注释掉此句
}
cout<<"\n"<<"0~9组成的无重复的三位数有"<<i<<"个"<<endl; // 输出总的个数
}

lixun_21 2008-05-11
  • 打赏
  • 举报
回复
#include <stdio.h>
int isReNum(int i)
{
int a,b,c;

a=i/100; //百位数
b=i/10%10; //十位数
c=i%10; //个位数

if(a==b || b==c ||c==a)//如果百,十,个位有重复的则返回0
return 0;
else
return 1;
}

void main()
{
int i,count=0;

for(i=0;i<1000;i++)//0-999 依次判断是否是重复的数
{
if(isReNum(i)==1)
{
++count;
}
}
printf("sum= %d \n",count);
}
lixun_21 2008-05-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lysggenius 的回复:]
900个
这个不用算吧 一想就知道
[/Quote]
无重复的数应该是指123 134 等数 但不包括 112 122等有重复数字的数吧!!
所以肯定不是900啦
cqqqq 2008-05-10
  • 打赏
  • 举报
回复
9*9*8
fengdream 2008-05-10
  • 打赏
  • 举报
回复

//用0--9这十个数字可以组成多少无重复的三位数

#include "stdio.h"
int main()
{
int i,j,k,count=0;

for(i=0;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
if(!((i==j)||(j==k)||(i==k)))
++count;
printf("total is %d\n", count);
return 0;
}
lysggenius 2008-05-10
  • 打赏
  • 举报
回复
900个
这个不用算吧 一想就知道
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
不知,帮顶
寻水载渡 2008-04-28
  • 打赏
  • 举报
回复
谢谢各位
zhongyonghb 2008-04-28
  • 打赏
  • 举报
回复
一个简单的排列组合问题
ntwenhua 2008-04-19
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
int i1,i2,i3;
int count=0;
for(i1=0;i1<10;i1++)
{
for(i2=0;i2<10;i2++)
{
if(i2==i1)
continue;
for(i3=0;i3<10;i3++)
{
if(i3==i2||i3==i1)
continue;
count++;
printf("%d:%d%d%d\n",count,i1,i2,i3);
if(count%50==0)
getchar();
}
}
}
return 0;
}
flyingpig4945 2008-04-19
  • 打赏
  • 举报
回复
更正:上面那个不行。
当j==i时会跳出j的所有循环,则i++,故i>j>k
不满足楼主提的要求

6楼中当i==j/j==k等,跳过该点,即j += 2,如此思路。
flyingpig4945 2008-04-19
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
for (int i = 1; i < 10; ++ i)
{
for (int j = 0; j < 10; ++ j)
{
if (j == i)
{
continue;
}
else
{
for (int k = 0; k < 10; ++ k)
{
if (k == j || k == i)
{
continue;
}
printf("%d%d%d\t", i, j, k);
}
}
printf("\n");
}
printf("\n");
}
system("pause");
return 0;
}

抱歉,抱歉。
VitoPJ 2008-04-19
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i,j,k;
for(i=1;i<10;++i)
{
for(j =0;j<10&&j!=i;++j)
{
for(k=0; k<10&&k!=j&&k!=i;++k)
{
printf("%d%d%d\t",i,j,k);
}
printf("\t");
}
}
system("pause");
return 0;
}
这个也是可以的,借用上面的
ntwenhua 2008-04-19
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
int i1,i2,i3;
int count=0;
for(i1=0;i1<10;i1++)
{
for(i2=0;i2<10;i2++)
{
if(i2==i1)
continue;
for(i3=0;i3<10;i3++)
{
if(i3==i2||i3==i1)
continue;
count++;
printf("%d:%2d%2d%2d",i1,i2,i3);
}
}
}
return 0;
}
flyingpig4945 2008-04-19
  • 打赏
  • 举报
回复
不好意思,写急了,差了。
等等
VitoPJ 2008-04-19
  • 打赏
  • 举报
回复
#include <stdio.h>
void main ()
{
int i,j,k,num;
num=0;
for(i=1;i<=9;i++)//表示百位
for(j=0;(j<=9)&&(j!=i);j++)//表示十位
for(k=0;(k!=i)&&(k!=j)&&(k<=9);k++)//表示个位
num=num++;
printf("%d\n",num);
}
自己最试一下!
flyingpig4945 2008-04-19
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
for (int i = 1; i < 10; ++ i)
{
for (int j = 0; j < 10 && j != i; ++ j)
{
for (int k = 0; k < 10 && k != j && k != i; ++ k)
{
printf("%d%d%d\t", i, j, k);
}
printf("\t");
}
}
system("pause");
return 0;
}

70,005

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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