给定数据求最大数问题
来源:互联网 发布:网络英语教学 编辑:程序博客网 时间:2024/05/29 16:17
给定任意一个正整数,从1到9中选取任意数字相加的和为给定的整数,且由这些数字组成一个最大数,且相邻两数不能重复,如3的组合为21,4的组合为121。
由于相邻两数不能重复,而且组合出来的数字需要尽可能大,则第一原则是保证足够多的位数,在位数相同的情况下保证高位的数比低位的数大,由此可得出2和1来进行组合。
(1)假设最高为为1,则从给定的数值减去1。
(2)在(1)中减去1后的值中减去1或者2,由于(1)中减去1则只能减去2。
(3)重复(1)和(2)中的步骤,当给定的数值只剩 1 或者 2 时,1不做操作,如果为2则将组合的 1 和 2 的位置对调。
下面为Java代码实现
public static String max(int in) { if (in < 3) { return in+""; } int flag = 1; boolean re; StringBuilder sb = new StringBuilder(); re = doSomething(flag, in, sb, 1); if (re) { flag=2; sb = new StringBuilder(); doSomething(flag, in, sb, 2); } return sb.toString();}private static boolean doSomething(int flag, int in, StringBuilder sb, int f) { boolean re = false; int c = in; while (c > 0) { sb.append(flag); c = c - flag; if (flag == 1) { flag = 2; } else { flag = 1; } if (f == 1 && (c < flag || c == 2)) { re = true; return re; } else if ( f == 1 && c == flag) { re = false; sb.append(c); return re; } } return re;}
阅读全文
0 0
- 给定数据求最大数问题
- 求给定数的最大“不重复数”
- 给定一个字符串,求这个字符串的最大回文数
- 给定几个数,求最大值
- 给定正整数b,求最大的整数a,满足a*(a+b) 为完全平方数
- 求给定数组的最大子数组
- 求最大数
- 求最大数
- 求最大数
- 三个数求最大。
- 排列求最大数
- 求最大递增数
- 求最大数
- 求最大递增数
- 求最大递增数
- 求最大数
- hdoj2071求最大数
- 十个数求最大
- 亿级用户下的新浪微博平台架构
- 第10周项目1(3)中序线索化二叉树的算法验证
- Docker教程三之基于Centos7的Nginx环境镜像以及简单负载均衡
- IntelliJ IDEA中的web.xml报cannot resolve symbol servlet的错误
- POJ 3255 Roadblocks (Dijkstra求最短路径的变形)(Dijkstra求次短路径)
- 给定数据求最大数问题
- java.lang.NoClassDefFoundError: Could not initialize class com.jacob.com.ComThread
- UDP实现简单的群聊功能代码示例
- java使用xmlWorkerHelper将html转pdf
- 前端最全的资源教程
- GPT分区+UEFI ssd+hdd 混合硬盘 安装 win10 ubuntu16.04 双系统
- redis面试总结
- ubuntu 国内源
- TabLayout+ViewPager+Fragment(代码)