题目12 打印1到最大的n位数】的更多相关文章

///////////////////////////////////////////////////////////////////////////////////// // 2.打印1到最大的n位数 // 2.1 方法一:当N很大时,会有溢出问题!!!! void Print1ToMaxOfDigits_1(int iLen) { ; ) { iNumber *= ; iLen--; } ; i < iNumber; i++) { == && i != ) { putchar()…
题目:打印1到最大的n位数 输入数字n,按顺序打印输出从1到最大的n位十进制数,比如输入3,打印从1到999. 这道题考察的地方是如何表示大数问题.由于n是任意大的数组,如果n太大的话n位数就超过了long型能够表示的范围,在面试题11求数值的整数次方的时候题目中已经明确的提示了不考虑大数问题,在这道题中,用字符串或者数组表示大数是一种很简单有效的方法.用字符串表示大数也适用于大数加法.大数减法和大数的乘法问题. 下面代码是使用数组方式实现大数的产生和打印,在这道题中要特殊考虑的地方是如果实现整…
// 面试题12_打印1到最大的n位数.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; bool Increment(char *number) { bool isOverflow=false; ; int nLength=strlen(number); ;i>=;--i) { '+nTakeOver; ) nSum++; ) { )//若是首位满…
书中方法:这道题的一个陷阱在于不能用int或者long去存储你要打印的数,然后用打印函数打印,因为这个数可能会很大.如果加1后超出了最大的n位数,就不打印了.用最高位是否进位判断是否结束,打印的时候注意不要打印出前面可能出现的0. public void print(int n){ if(n<=0){ return; } //必须要用字符数组防止大数 char[] c = new char[n]; for(int i=0; i<n; i++){ c[i] = '0'; } while(!inc…
问题描述: 输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数即999. 思路1:最简单的想法就是先找出最大的n位数,然后循环打印即可. public static void Print1ToMaxOfNDigits_1(int n){ int number = 1; int i = 0; while(i++ < n){ number *= 10; } //number-1是最大的n位数 for(int j = 1; j < number; j+…
题目:输入数字n,按照打印出从1最大的n位10进制数.比如3,则 打印出1.2.3一直到最大的3位数即999 1.你觉得如果面试会有这么简单的题,那 只能说明你---太天真. 2.n=3尚可,如果n=30 300呢有这样的内置数据类型 能包括这么大的数吗? 3.说白了,这道题就是考察用字符串模拟大数. 算法思想如下: 1.分配大小为n+1个字符的内存 初始化为'0' 最后一个'\0' 2.模拟加法,每一位字符上的范围为'0'-'9'当超过之后进位, 3.结束条件,当第一位字符发生进位时说明已经遍…
输入数字 n,按顺序打印出从 1 最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数即 999.由于 n 可能会非常大,因此不能直接用 int 表示数字,而是用 char 数组进行存储. 使用回溯法得到所有的数. Java: public void printToMaxOfNDigits(int n) { if (n < 0) return; char[] number = new char[n]; printToMaxOfNDigits(number, -1);…
一.题目:打印1到最大的n位数 题目:输入数字n,按顺序打印出从1最大的n位十进制数.比如输入3,则打印出1.2.3一直到最大的3位数即999. 二.不同的解法 2.1 不假思索的解法 最容易想到的办法是先求出最大的n位数,然后用一个循环从1开始逐个打印: static void Print1ToMaxOfNDigitsSimple(int n) { ; ; while (i < n) { number = number * ; i++; } ; i < number; i++) { Cons…
一 题目:打印1到最大的n位数 题目:输入数字n,按顺序打印从1到最大的n位十进制.比如输入3,则打印出1.2.3一直到最大的3位数即999. 二 不考虑大数解法 // 打印从1到最大的n位数 void PrintNumbs(int n) { ; ;i <= n; i ++) { nMax = nMax* + ; } ; j <= nMax; j ++) { cout << j << endl; } } 三 字符串模拟算法解法 解决这个问题需要表达一个大数.最常用也是最…
题目: 打印1到最大的n位数.如n=4,打印1-9999. 思路: 由于直接使用循环会导致int或者long long都不够存储.因此使用字符串来存储数据,这里涉及到数字转换成字符串以及字符串的加法. 代码: 1.使用递归思路. 可以认为.从高位到低位,高位数先固定,在此情况下,低位数依次调整.每一位涉及0-9调整,这里每一级的都要嵌套10次. void printMax(char* number,const int index,const int size){//嵌套打印函数,size为总的位…