今天的数学课让你感到很无聊。于是你打算在纸上写下所有n位不含重复数字的数,来打发时间。
例如:你打算写6位数,那么你会写下127643;而123347含重复的3,你不会写下它。
你决定由小到大写出每个数,并且你不会考虑含前导0的n位数。
输入
输入一个数n,表示你打算写n位数。
输出
每行输出一个数,表示你所写下的n位数。
数据范围
对于100%的数据,1≤n≤8;
输入样例
1
输出样例
1
2
3
4
5
6
7
8
9
51NOD-n位不重复的数字
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
10条回答 默认 最新
- aabyte 2021-08-25 00:23关注
解题思路:
1.遍历所有n位数
2.对n位数的各位进行查重,可以将这个数的各位放到一个数组里进行查重
3.输出无重复元素的数组对应的那个n位数参考代码:
#include <iostream> #include <cmath> using namespace std; int main() { int n=0; cin>>n; int* a=new int[n]; //申请长度为n的动态数组用来存放n位数的各位 for(int i=pow(10,n-1); i<pow(10,n); i++) //遍历所有n位数 { int x=i,j=0,flag=1; while(x>0) //将这个n位数的各位拆分至数组a中 { a[j]=x%10; x=x/10; j++; } for(int k=1; k<j; k++) //对数组a的所有元素进行查重 { for(int m=0; m<k; m++) { if(a[m]==a[k]) flag=0; } } if(flag==1) //如果flag的值仍为1,说明数组a没有重复元素,所以输出i cout<<i<<endl;; } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥50 成都蓉城足球俱乐部小程序抢票
- ¥15 yolov7训练自己的数据集
- ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
- ¥15 电力市场出清matlab yalmip kkt 双层优化问题
- ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
- ¥20 matlab yalmip kkt 双层优化问题
- ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
- ¥88 实在没有想法,需要个思路
- ¥15 MATLAB报错输入参数太多
- ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件