下一章 上一章 目录 设置
2、数字构成固定位数去重 ...
-
初始题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
初始题目较为简单,可以直接三次循环后排除重复数字的情况。
Python:
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if( i != k ) and (i != j) and (j != k):
print (i,j,k)
C++:
#include<iostream>
using namespace std;
int main()
{
int count=0;
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++)
{
for(int k=1;k<=4;k++)
{
if(i!=j&&i!=k&&j!=k)
{
count++
cout<<i*100+j*10+k<<" ";
}
}
}
}
cout<<endl;
cout<<"这样的数字的个数为"<<count<<"个\"<<endl;
return 0;
}
变式1:对输出数字进行二次限定,比如要求输出数字除了不重复还要求是素数。
这样我们的解题思路只需要在上面程序的循环体中加上对于素数的判断。但这样一来整个程序就会变得赘余好多,不会解决。
开摆。
变式2:这个程序简单的原因是它……每个数字都能做首位,但如果基础数字有0,那么循环体最后要按比例把首位为0的数字先去掉。
这个还好,不难。
变式3:这个比较变态,原式是给了四个不同的数字,但这个如果给了有重复的数字,比如什么0、0、5、7这样,不是说不能算,就是有点麻烦……我的妈,越想越头疼。