剑指offer 面试题12 打印1到n位整数的最大值
来源:互联网 发布:重庆网络刷票投票公司 编辑:程序博客网 时间:2024/05/22 10:45
<pre name="code" class="cpp">#include <iostream>#include <cstring>using namespace std;//接收字符串,加1,判断是否溢出//方法1:找到第一个不等于9的数字下标,将其加1,并将之后的位都置0 bool increment(char* number){bool overflow=false;//flag是第一个不等于9的数字下标,从后往前找 int flag=strlen(number)-1;while(flag>=0&&number[flag]=='9'){--flag;}if(flag<0){overflow=true;}else{number[flag]=number[flag]+('1'-'0');for(int i=flag+1;i<strlen(number);++i){number[i]='0';}}return overflow;}//方法2:朴素加法算法//分别对每一位操作,设置一个保存进位的变量bool increment2(char* number){ bool isOverflow = false; int nTakeOver = 0; int nLength = strlen(number); for(int i = nLength - 1; i >= 0; i --) { int nSum = number[i] - '0' + nTakeOver; if(i == nLength - 1) nSum ++; if(nSum >= 10) { if(i == 0) isOverflow = true; else { nSum -= 10; nTakeOver = 1; number[i] = '0' + nSum; } } else { number[i] = '0' + nSum; break; } } return isOverflow;}//接收数字,开头的0不输出 void print(char* number){//flag是第一个不等于0的数字下标,从前往后找 int flag=0;while(flag<strlen(number)&&number[flag]=='0'){flag++;} for(int j=flag;j<strlen(number);++j){cout<<number[j];}cout<<' ';} //接收n,输出所有数字 void Print1ToMaxN(int n){if(n<=0) return;char* number=new char [n+1];number[n]='\0';memset(number,'0',n);while(!increment(number)){print(number);//cout<<number<<' ';}delete []number;}//方法3:每一位都做一次0~9的全排列//全排列问题->递归法 void Print1ToMaxN_Recursion_core(char* number,int n,int index){if(index==n){print(number);return;}for(int i=0;i<10;++i){number[index]=i+'0';Print1ToMaxN_Recursion_core(number,n,index+1);}}void Print1ToMaxN_Recursion(int n){if(n<=0) return;char* number=new char[n+1];number[n]='\0';Print1ToMaxN_Recursion_core(number,n,0);delete []number;}int main(){int n=3;Print1ToMaxN(n);Print1ToMaxN_Recursion(n);}
0 0
- 剑指offer 面试题12 打印1到n位整数的最大值
- 剑指offer 面试题12 打印 1 到最大的 n 位整数
- 剑指offer 面试题(打印1到n最大的n位整数)(6)
- 剑指offer面试题12 打印从1到最大n位的所有数(大数,递归)
- 剑指offer面试题12:打印1到最大的n位数(1)
- 剑指offer 面试题12 打印1到最大的N位数
- [剑指offer][面试题12]打印1到最大的n位数
- 【剑指offer】面试题12:打印1到最大的n位数
- 剑指offer 面试题12 打印1到最大的n个数
- 剑指Offer:面试题12 打印1到最大的n位数
- 《剑指Offer》面试题12:打印1到最大的n位数
- 剑指offer 面试题12—打印1到最大的n位数
- 【剑指Offer学习】【面试题12 :打印1 到最大的n 位数】
- 《剑指Offer》学习笔记--面试题12:打印1到最大的n位数
- 剑指offer--面试题12:打印1到最大的n位数--Java实现
- 剑指Offer面试题12(Java版):打印1到最大的n位数
- 剑指offer面试题12-打印1到最大的n位数
- 《剑指Offer》面试题12:打印1到最大的n位数
- Android中Js与Java互调
- java常用第三方软件包
- iOS-UITableView使用reloadSections刷新section问题
- LeetCode 分类
- Linux 后台执行命令
- 剑指offer 面试题12 打印1到n位整数的最大值
- 为什么你的App介绍写得像一坨翔?
- ORACLE--Connect By、Level、Start With的使用(Hierarchical query-层次查询)
- Qt 显示图片 放大 缩小 移动
- Android中全局Application的onCreate多次调用问题
- Vmware虚拟机下三种网络模式配置
- sqlite避免重复插入数据
- 边记边学PHP-(十六)PHP使用MySQL扩展库操作数据库
- ExtJs4学习(六)MVC中的Model