[剑指Offer]17-打印从1到最大的n位数(递归)
2024-09-07 03:39:27
题目
如题,输入n,则从1打印至99.
题解
考虑到n比较大会有大数问题,所以使用字符数组存储数。
由题可用递归求n位全排列,即为所得。
具体地,用临时字符数组用来存答案,每次递归填好一位,都填好后输出。
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int n=s.nextInt();
printToN(n);
}
public static void printToN(int n) {
char[] num=new char[n];
composeNum(num,0,num.length);
}
//len位全排列
private static void composeNum(char[] num,int pos,int len) {
if(pos==len) {//此位不需要再填,输出此时num即为所得
printDelZero(num);
}
else {
for(int i=0;i<10;++i) {
num[pos]=(char) (i+'0');
composeNum(num,pos+1,len);
}
}
}
//删除前面的0
private static void printDelZero(char[] num) {
int pos=0;
for(;pos<num.length;++pos) {
if(num[pos]!='0') {
break;
}
}
for(int i=pos;i<num.length;++i) {
System.out.print(num[i]);
}
System.out.print("\n");
}
}
最新文章
- SSH实战 &#183; 唯唯乐购项目(下)
- gulp之压缩合并MD5清空替换加前缀以及自动编译自动刷新浏览器大全
- [mysql] Some non-transactional changed tables couldn&#39;t be rolled back
- centos安装youcompleteme
- jquery uploadify 进入页面请求两次问题解决办法。
- django默认开事务的麻烦事
- nginx缓存优先级(缓存问题者必看)
- iOS_SN_UITableView的优化
- iOS学习心得——UINavigationController
- Python中进行Base64编码和解码
- 微信移动支付V3开发详细教程服务端采用.net mvc webapi(C#)
- HTML阶段总结
- bootstrap select2 使用简单介绍
- Logistic Regression vs Naive Bayes
- iOS字符串自动计算文本的宽和高
- Django ListView实现分页
- python3 urllib及requests基本使用
- MT【28】内心外衣下的等腰三角形个数
- 2.ECS内 经典网络与VPC网络的区别
- Mysql删除所有表