剑指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题,实际上就是考察二叉树的层序遍历,详细思想能够參考 ...
随机推荐
- ADT下开发环境的配置--个人配置啦 Eclipse Color Themes
一. Eclipse Color Themes的安装 首先 这个ADT没有Marketplace Client 需要装一个, 节选自: http://blog.csdn.net/liu37226700 ...
- android 自定义控件(初篇)
android 自定义控件 在写UI当中很多时候会用到自定义的控件,其实自定义控件就像是定义一个类进行调用就OK了.有些相关的感念可以查看API 下面就用个简单的例子来说明自定义控件: public ...
- GET与POST提交
get是从服务器上获取数据,post是向服务器传送数据. get 是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,[在URL中可以看到].post是通过HTT ...
- javascript自执行函数为什么要把windows作为参数传进去
http://segmentfault.com/q/1010000000311686 (function (window, $, undefined) { play=function(){ $(&qu ...
- UVA1151
//感觉刘汝佳老师的思维真的太厉害了orz /*摘录书上的一段话: 只需一个小小的优化即可降低时间复杂度:先求一次原图(不购买任何套餐)的最小生 成树,得到n-1条边,然后每次枚举完套餐后只考虑套餐中 ...
- css3 过度效果之物体向上冒出
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta nam ...
- Windows Server Backup 2008 R2 备份Hyper-V
要备份 Hyper-V 虚拟机从父分区在 Windows Server 2008 上使用 Windows 服务器备份,您必须注册 Microsoft Hyper-V VSS 编写器 Windows 服 ...
- Android常见工具类封装
MD5加密 import android.annotation.SuppressLint; import java.security.MessageDigest; public class MD5 { ...
- 【转】深入浅出REST
转自:http://www.infoq.com/cn/articles/rest-introduction 不知你是否意识到,围绕着什么才是实现异构的应用到应用通信的“正确”方式,一场争论正进行的如火 ...
- Codeforces Round #335 (Div. 1) C. Freelancer's Dreams 计算几何
C. Freelancer's Dreams Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.codeforces.com/contes ...