剑指offer 打印1到最大的N位数

来源:互联网 发布:金融软件开发公司 编辑:程序博客网 时间:2024/05/22 03:02

题目描述:
给定一个数字N,打印从1到最大的N位数。

思路:如果用for循环,那么这道题将毫无意义。如果N不是5而是100,还能用for循环吗。我的做法是dfs回溯求全排列,注意不要讲前导零输出。

#include <cstdio>#include <cstring>using namespace std;int num[10];int n;void dfs(int cur){    if(cur == n){        bool f = false;        for(int i = 0; i < n; i++){            if(num[i] != 0)                f = true;            if(f || num[i] != 0)                printf("%d", num[i]);        }        if(f)            printf("\n");        return;    }    for(int i = 0; i < 10; i++){        num[cur] = i;        dfs(cur+1);    }}int main(){    scanf("%d", &n);    dfs(0);    return 0;}
0 0
原创粉丝点击