每天一题:
现有1,2,3,4 四个数字,能组成多个不同且无重复数字的三位数?
看到题的时候,可能觉得很简单吧,像这样列出来:
#include <stdio.h>
int main()
{
printf("%d%d%d",1,2,3);
printf("%d%d%d",1,3,2);
printf("%d%d%d",2,1,3);
return 0;
}
对于我们这道题的数量小来说,可以这样慢慢列出来,但是如果是1-10呢,你又该怎么办
代码实现:
下面我给大家讲一下如何实现这个效果:
首先我们要确保,这4个数值可以一一列出,其次再来解决不重复的问题
#include <stdio.h>
int main()
{
int arr[4]={1,2,3,4};
return 0;
}
有了数组,就等于有了地基,下面就可以开始搭房子;
#include <stdio.h>
int main()
{
int arr[]={1,2,3,4};
int sz=sizeof(arr)/sizeof(int);
int x,y,z;
for(x=0;x<sz;x++)
{
for(y=0;y<sz;y++)
{
}
}
return 0;
}
到这里我们就要停下来思考了,题目说不重复,那就需要给他做限定了
#include <stdio.h>
int main()
{
int arr[]={1,2,3,4};
int sz=sizeof(arr)/sizeof(int);
int x,y,z;
for(x=0;x<sz;x++)
{
for(y=0;y<sz;y++)
{
if(arr[x]!=arr[y])
{
for(z=0;z<sz;z++)
{
if(arr[x] != arr[y] && arr[x] != arr[z] && arr[y] != arr[z])
{
printf("%d%d%d",arr[x],arr[y],arr[z]);
}
}
}
}
}
return 0;
}
这样就出来了,是不是非常简单
123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432