由1,2,3,4,5组成的五位数(数字不重复),共有120个,由小到大排列,12345是第一个,54321是最后一个,问第32个数是几
你可以参考一下,希望采纳
#include<stdio.h>
int main()
{
int num = 0, i;
int a[5] = {1,2,3,4,5};//个位
int b[5] = {1,2,3,4,5};//十位
int c[5] = {1,2,3,4,5};//百位
int d[5] = {1,2,3,4,5};//千位
int e[5] = {1,2,3,4,5};//万位
int ans[121];//用来保存生成的数
int a1,b1,c1,d1,e1;
for(e1 = 0;e1 < 5;e1++)
{
for(d1 = 0;d1< 5;d1++)
{
for(c1 = 0;c1 < 5;c1++)
{
for(b1 = 0;b1 < 5;b1++)
{
for(a1 = 0;a1 < 5;a1++)
{
if(a[a1]!=b[b1] && a[a1]!=c[c1] && a[a1]!=d[d1] && a[a1]!=e[e1] && b[b1]!=c[c1] && b[b1]!=d[d1] && b[b1]!=e[e1] && c[c1]!=d[d1] && c[c1]!=e[e1] && d[d1]!=e[e1])
//每一位不能重复
{
num = e[e1]*10000+d[d1]*1000+c[c1]*100+b[b1]*10+a[a1];
ans[i] = num;
i++;
}
}
}
}
}
}
//从小到大排序
int j,temp = 0;
for(i = 0;i < 120;i++)
{
for(j = i + 1;j < 120;j++)
{
if(ans[i] > ans[j])
{
temp = ans[i];
ans[i] = ans[j];
ans[j] = temp;
}
}
}
printf("第32个数是: ",ans[31]);
return 0;
}
32: 2-3-1-5-4
直接从12345到54321遍历,如果值是12345的组合且五个值各不相同,就保存该值