用3 5 7 9四个数字,能组成多少个互不相同且无法重复数字的三位数?全部输出。 10

要用c语言啊!不要c++求解速度啊。最好把解题思路写上!... 要用c语言啊!不要c++求解速度啊。最好把解题思路写上! 展开
 我来答
飘雨56
2012-06-14 · 一分耕耘一分收获,凡事预则立
飘雨56
采纳数:931 获赞数:4490

向TA提问 私信TA
展开全部
/*循环数,只要每一位上的数不相等*/
#include<stdio.h>

void main()
{
for(int one=3;one<10;one+=2)
for(int two=3;two<10;two+=2)
for(int three=3;three<10;three+=2)
if(one!=two && two!=three && one!=three)
printf("%d%d%d\t",one,two,three);
printf("\n");
}
sunny血玉麒麟
2012-06-17
知道答主
回答量:25
采纳率:0%
帮助的人:9万
展开全部
第一个数4种
第二个数3种
第三个数2种
4×3×2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-06-14
展开全部
因为四个数字各不相同,思路如下:
1. 去掉一个数字
2. 对剩下的三个数字全排列

代码中,对前三个数字全排列。把需要去掉的数字同第四个数字交换,即可“去掉”。
输出结果后交换回,再继续。

#include <stdio.h>
#define N 5
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void permutation(int *a, int first, int n)
{
int i;
if(first == n - 1) {
for(i = 0; i < n; i ++) printf("%d ", a[i]);
printf("\n");
return ;
}
for(i = first; i < n; i ++){
swap(a + i, a + first);
permutation(a, first+1, n);
swap(a + i, a + first);
}
}
int main()
{
int a[N] = {3, 5, 7, 9};
int i;
for(i = 0; i < 4; i ++){
swap(a+i, a+4-1);
permutation(a, 0, 3);
swap(a+i, a+4-1);
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式