/** *题目:输入数字n,按顺序打印从1最大的n位十进制数,比如输入3,则打印出1、2、3一直到最大的3位数即999. *时间:2015年8月29日09:32:48 *文件:MaxOfNDigits_1.java *作者:cutter_point */ package bishi.Offer50.y2015.m08.d29; import org.junit.*; public class MaxOfNDigits_1 { /** * 打印出来这些数 * @param n */ public void print1ToMaxOfNDigits(int n) { if(n <= 0) return; //从1到n位数,也就是创建一个长为n的数组 char number[] = new char[n]; for(int i = 0; i < n; ++i) { //初始化为0 number[i] = '0'; }//for int i = 0; //只要没有溢出,我们不断输出 while(!increment(number)) { ++i; System.out.print(String.valueOf(number) + "\t"); if(i % 10 == 0) System.out.println(); } } //这个题涉及到大数 private boolean increment(char number[]) { boolean overflow = false; //判断是否溢出 int nTake10 = 0; //进位 int num = 0; for(int i = number.length - 1; i >= 0; --i) { num = number[i] - '0' + nTake10; if(i == number.length - 1) ++num; if(num >= 10) { //进位 if(i == 0) { overflow = true; }//if溢出 else { nTake10 = num / 10; num = num % 10; number[i] = (char) (num + '0'); }//else }//if else { //没有进位,那么结束 number[i] = (char) (num + '0'); break; }//else }//for return overflow; } @Test public void Test() { MaxOfNDigits_1 mond1 = new MaxOfNDigits_1(); mond1.print1ToMaxOfNDigits(10); } public static void main(String[] args) { } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/cutter_point/article/details/48085221