剑指Offer10 打印1到最大n位数
/*************************************************************************
> File Name: 10_PrintToMaxNum.c
> Author: Juntaran
> Mail: JuntaranMail@gmail.com
> Created Time: 2016年08月30日 星期二 00时47分36秒
************************************************************************/ #include <stdio.h>
#include <malloc.h>
#include <string.h> void PrintNumber(char* number)
{
bool isBeginning0 = true;
int length = strlen(number); for (int i = ; i < length; ++i)
{
if (isBeginning0 && number[i]!='')
isBeginning0 = false; if (!isBeginning0)
printf("%c", number[i]);
}
printf("\t");
} bool Increment(char* number)
{
bool isOverflow = false;
int length = strlen(number);
int TakeOver = ; for (int i = length-; i >= ; i--)
{
int sum = number[i] - '' + TakeOver; // 进位
if (i == length - )
sum ++; if (sum >= )
{
if (i == )
isOverflow = true;
else
{
sum -= ;
TakeOver = ;
number[i] = sum + '';
}
}
else
{
number[i] = sum + '';
break;
}
}
return isOverflow;
} // 从1打印到最大的n位数
void PrintToMaxNum1(int n)
{
if (n <= )
return; char* number = (char*)malloc(sizeof(char)*(n+));
memset(number, '', n);
number[n] = '\0'; while (!Increment(number))
{
PrintNumber(number);
}
free(number);
} /************************************************************************/
// 递归写法
void PrintToMaxNumRecursively(char* number, int length, int index)
{
if (index == length-)
{
PrintNumber(number);
return;
}
for (int i = ; i < ; ++i)
{
number[index+] = i + '';
PrintToMaxNumRecursively(number, length, index+);
}
} void PrintToMaxNum2(int n)
{
if (n <= )
return; char* number = (char*)malloc(sizeof(char)*(n+));
number[n] = '\0'; for (int i = ; i < ; ++i)
{
number[] = i + '';
PrintToMaxNumRecursively(number, n, );
}
free(number);
} int main()
{
int n = ;
PrintToMaxNum1(n);
PrintToMaxNum2(n);
}
剑指Offer10 打印1到最大n位数的更多相关文章
- 剑指offer 打印从1到最大的n位数
题目描述: 输入数字n,按顺序打印出从1到最大的n位十进制数.比如输入3,则打印出1.2.3一直到最大的3位数999. 分析:注意不能直接输入最大的n位十进制数,因为可能属于大数,这个数无法用int或 ...
- 剑指offer--10.最小的K个数
边界判断,坑了一下 ----------------------------------------------- 时间限制:1秒 空间限制:32768K 热度指数:375643 本题知识点: 数组 ...
- 剑指offer12 打印从1到N位的所有数字,处理大整数情况
/** * */ package jianzhioffer; /** * @Description 输入n位数,输出0-N的所有数 * @author liutao * @data 2016年4月22 ...
- 剑指Offer-10.矩形覆盖(C++/Java)
题目: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 分析: 实际上还是一道斐波那契数列的应用,要填2*n的大矩形, ...
- 剑指offer10:2*1的小矩形横着或者竖着去覆盖2*n的大矩形,总共有多少种方法?
1. 题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 2.思路和方法 思路:(下面说到的x*y的矩形,x是宽 ...
- 《剑指offer》面试题12:打印1到最大的n位数
面试题12:打印1到最大的n位数 剑指offer题目12,题目如下 输入数字n,按顺序打印出1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的三位数999 方法一 和面试题11< ...
- 剑指Offer:面试题20——顺时针打印矩阵(java实现)
题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数 字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1, ...
- 【剑指offer】顺时针打印矩阵
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...
- 【剑指offer】从上向下打印二叉树
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26089165 剑指offer上的第23题,实际上就是考察二叉树的层序遍历,详细思想能够參考 ...
随机推荐
- cf754 B. Ilya and tic-tac-toe game
呵呵呵,这个题简直是一直在乱做,真是最近太弱了 #include<bits/stdc++.h> #define lowbit(x) x&(-x) #define LL long l ...
- [GUI]界面开发类库-Ribbon风格 [转]
[GUI]界面开发类库 如果我们不十分清楚需要什么样的界面风格及如何实现,请按以下两个步骤操作: (1) 搞清楚这种风格叫什么名字 (2) 查现有的比较著名的GUI库是否已有相 ...
- arm_cm4.c关于kinetis的修改
/***********************************************************************/ /* * Initialize the NVIC t ...
- IE6下z-index失效
一.匆匆带过的概念关于CSS中层级z-index的定义啊什么的不是本文的重点,不会花费过多篇幅详细讲述.这里就简单带过,z-index伴随着层的概念产生的.网页 中,层的概念与photoshop或是f ...
- SpringAOP 基础具体解释
Spring AOP对于刚開始学习spring的同学来说有点难以理解.我刚工作的时候都没怎么理解,如今略微理解了一点,所以在这里我将用嘴简单的样例,最通俗易懂的话语来说出我的理解,可能因为我对Spri ...
- PS-文字如何竖排版
单击文字输入工具“T”按钮,点住鼠标左键不要松手,会在“T”按钮的右边显示出其它形式的文字工具,拖动鼠标指向“直排文字”工具就可以了.
- 使用sqlite的命令操作
一: 首先进入到D:\java\android\android-sdk\platform-tools文件夹里面 二:使用adb shell进入shell命令方式行(注意要想进入shell里面的操作 ...
- DLX舞蹈链 hdu5046
题意: 在N个城市选出K个城市,建飞机场(1 ≤ N ≤ 60,1 ≤ K ≤ N),N个城市给出坐标,选择这K个机场,使得从城市到距离自己最近的机场的 最大的距离 最小. 输出这个最小值. 思路: ...
- [Express] Level 5: Route Instance -- refactor the code
Route Instance Let's rewrite our cities routes using a Route Instance. Create a new Route Instance f ...
- 你真的会使用SQL Server的备份还原功能吗?之一:恢复模型
在SQL Server中,除了系统数据库外,你创建的每一个数据库都有三种可供选择的恢复模型: Simple(简单), full(完整), bulk-logged(批量日志). 下面这条语句可以显示出所 ...