/*************************************************************************
> 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位数的更多相关文章

  1. 剑指offer 打印从1到最大的n位数

    题目描述: 输入数字n,按顺序打印出从1到最大的n位十进制数.比如输入3,则打印出1.2.3一直到最大的3位数999. 分析:注意不能直接输入最大的n位十进制数,因为可能属于大数,这个数无法用int或 ...

  2. 剑指offer--10.最小的K个数

    边界判断,坑了一下 ----------------------------------------------- 时间限制:1秒 空间限制:32768K 热度指数:375643 本题知识点: 数组 ...

  3. 剑指offer12 打印从1到N位的所有数字,处理大整数情况

    /** * */ package jianzhioffer; /** * @Description 输入n位数,输出0-N的所有数 * @author liutao * @data 2016年4月22 ...

  4. 剑指Offer-10.矩形覆盖(C++/Java)

    题目: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 分析: 实际上还是一道斐波那契数列的应用,要填2*n的大矩形, ...

  5. 剑指offer10:2*1的小矩形横着或者竖着去覆盖2*n的大矩形,总共有多少种方法?

    1. 题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 2.思路和方法 思路:(下面说到的x*y的矩形,x是宽 ...

  6. 《剑指offer》面试题12:打印1到最大的n位数

    面试题12:打印1到最大的n位数 剑指offer题目12,题目如下 输入数字n,按顺序打印出1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的三位数999 方法一 和面试题11< ...

  7. 剑指Offer:面试题20——顺时针打印矩阵(java实现)

    题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数 字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1, ...

  8. 【剑指offer】顺时针打印矩阵

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...

  9. 【剑指offer】从上向下打印二叉树

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26089165 剑指offer上的第23题,实际上就是考察二叉树的层序遍历,详细思想能够參考 ...

随机推荐

  1. JS获取URL参数 方法

    function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = qu ...

  2. JSP页面上用横线代替文本框

    <tr> <td class="content" colspan = 4> <input type="hidden" name=& ...

  3. Java学习笔记之接口

    一.接口的概念与定义 首先考虑一个简单的接口的定义: public interface Output { int MAX_LINE = 40; void out(); void getData(Str ...

  4. OC基础之方法和参数的命名规范

    以前学过C/C++/Java/C#语言的童鞋可能刚开始对于OC的方法和参数的命名规范大为不爽 举例来说,如下一个OC方法: - (void)tableView:(UITableView *)table ...

  5. Codeforces Educational Codeforces Round 3 C. Load Balancing 贪心

    C. Load Balancing 题目连接: http://www.codeforces.com/contest/609/problem/C Description In the school co ...

  6. TCP具体解释(2):三次握手与四次挥手

    TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接,就好像你给别人打电话.必须等线路接通了.对方拿 ...

  7. 微信lbs---返回两个经纬度坐标点的距离

    微信开发:lbs附近的商家,在数据库里记录商家的坐标,lbs设置里管理搜索半径,查询的时候,查询 客户当前坐标的半径内的所有商家列表.个人喜欢不一样,我选择了执行sql ,毕竟效果高点.微信开发必须得 ...

  8. [MongoDB] Query, update, index and group

    /* 1. Query Operators */ db.posts.find({ viewsCount: {$get: 1000, $lte: 3000} }, {_id: 0, viewsCount ...

  9. jQuery css() 方法

    $("p").css("background-color"); $("p").css("background-color" ...

  10. 一款基于jquery的下拉点击改变背景图片

    今天给大家介绍一款基于jquery的下拉点击改变背景图片.单击右上角的图片,下拉显示可选择的背景图片,单击图片变为背景图.效果图下: 在线预览   源码下载 实现的代码. html代码: <a ...