平平无奇的编程萌新 2021-08-24 20:43 采纳率: 95.2%
浏览 161
已结题

51NOD-n位不重复的数字

今天的数学课让你感到很无聊。于是你打算在纸上写下所有n位不含重复数字的数,来打发时间。
例如:你打算写6位数,那么你会写下127643;而123347含重复的3,你不会写下它。
你决定由小到大写出每个数,并且你不会考虑含前导0的n位数。
输入
输入一个数n,表示你打算写n位数。
输出
每行输出一个数,表示你所写下的n位数。
数据范围
对于100%的数据,1≤n≤8;
输入样例
1
输出样例
1
2
3
4
5
6
7
8
9

  • 写回答

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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

问题事件

  • 系统已结题 9月2日
  • 已采纳回答 8月25日
  • 创建了问题 8月24日

悬赏问题

  • ¥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文件并按照修改日期的名字命名文件