每天一题:
现有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