黑马程序员——C语言基础——排列

来源:互联网 发布:mac口红铁锈红 编辑:程序博客网 时间:2024/06/05 10:09

            -----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

                                 排列        

排列是C语言中常出现的话题,有些题可以用全排列来做,也可以根据条件用数学方法简化,使计算的效率更高。

示例:

用1,2,3,4,5,6,7,8,9组成三个数abc,def,ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3,输出所有解。

#include<stdio.h>
int main()
{
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a, b, c, d, e, f, g, h, i,x;
for (x = 123; x >= 123 && x <= 329; x++)//三位不重复的数中最小的是123,最大的是789,而三位数ghi是abc的三倍,故x必须满足范围
{
a = x / 100;//一个三位数除以100便得它的百位上的数
b = (x / 10) % 10;//一个三位数除以10得两位数,再对10取余便得这个三位数的十位上的数
c = x % 10;//一个三位数对10取余便得它的个位
d = (2 * x) / 100;
e = (2 * x) / 10 % 10;
f = (2 * x) % 10;
g = (3 * x) / 100;
h = (3 * x)/10 % 10;
i = (3 * x) % 10;
if (a+b+c+d+e+f+g+h+i==45 && a*b*c*d*e*f*g*h*i==1*2*3*4*5*6*7*8*9)//附加两个条件,排除掉不符合条件的
{
printf("%d %d  %d\n", x,2*x,3*x);
}
}
system("pause");
return 0;
 
}           
0 0
原创粉丝点击