一道简单面试题和霍尔规则
来源:互联网 发布:常用的推荐系统算法 编辑:程序博客网 时间:2024/05/17 06:24
一个简单程序题的记录。
题目: 实现输入1-9的数字i时,完成对应1-i个i的逐步连加。
例如:<i = 5> 5 + 55 + 555 + 5555 + 55555
最简单的答案:
核心想法是:多部循环,一步执行,时间复杂度最小。
public static void Zyfunction(int k){int sum = 0;int s = k;String str = "";for (int i = 0; i < k; i++) {sum = sum + s;if (i == k-1) {str = str + new Integer(s).toString()+"=";}else{str = str + new Integer(s).toString()+"+";}s = 10*s + k;}System.out.println(str + sum);}另外介绍几种在出题过程中考生容易作答的几种答案,复杂度都是n^2;显然不优良。
主要是单项处理环节的差异;就是处理输出k个i;
方法1,依照循环直接生成。
方法2,实现递归生成。
方法3,实现整形装箱字符串拼接生成。
public static void StuAfunction(int k){int sum = 0;String str = "";for (int i = 0; i < k; i++) {sum = sum + returnAi(k, i);if (i == k-1) {str = str + new Integer(returnAi(k, i)).toString()+"=";}else{str = str + new Integer(returnAi(k, i)).toString()+"+";}}System.out.println("A考生[递归]的输出:"+"\n"+str + sum);}//返i个k<递归法>public static int returnAi(int k,int i){if(i == 0)return k;return 10*returnAi(k, i-1)+k;}//返回i个k字符拼接法public static int returnBi(int k,int i){String ss = new Integer(k).toString();String s = new Integer(k).toString();for (int j = 0; j < i; j++) {ss = ss + s; }int r = new Integer(ss);return r;}//过程同A这部分public static void StuBfunction(int k){int sum = 0;String str = "";for (int i = 0; i < k; i++) {sum = sum + returnBi(k, i);if (i == k-1) {str = str + new Integer(returnBi(k, i)).toString()+"=";}else{str = str + new Integer(returnBi(k, i)).toString()+"+";}}System.out.println("B考生[字符串拼接]的输出:"+"\n"+str + sum);}//正常计算法public static int returnZi(int k,int i){int ai = 0;for (int j = 0; j < i+1; j++) {ai = ai * 10 +k;}return ai;}//ABZ三个方案这部分都是相同的public static void StuZfunction(int k){int sum = 0;String str = "";for (int i = 0; i < k; i++) {sum = sum + returnZi(k, i);if (i == k-1) {str = str + new Integer(returnZi(k, i)).toString()+"=";}else{str = str + new Integer(returnZi(k, i)).toString()+"+";}}System.out.println("大部分考生[正常方法]的输出:"+"\n"+str + sum);}
给上一个main方法包含四种方法即可:
<span style="white-space:pre"></span>int k = 7;Zyfunction(k);StuAfunction(6);StuBfunction(7);StuZfunction(8);
下面介绍Huoer规则,同样是循环步骤的压缩,应用在多项式的求解中。
详情可百度。是看到这个题想到了以前有这个规则。所以附上。
package com.byk.霍尔规则;/** 多项式的计算 *霍尔规则 */public class Demo {public static void main(String[] args) {huoErRule(12);huoEr(12, 10);}public static void huoErRule(int k){String s = "A" + new Integer(k).toString();for (int i = k-1; i > -1; i--) {s = "A" + new Integer(i).toString() +"+"+ "x("+s+")";}System.out.println(s);}public static void huoEr(int n,int x){int[] arr = new int[n+1];for (int i = 0; i < arr.length; i++) {arr[i] = (int) (8*Math.random()+1);}printArray(arr);long s = 0;for (int i = n; i >= 0; i--) {s = arr[i] + s*x;}System.out.println(s);}public static void printArray(int[] arr){System.out.print("该数组为:[");for (int i = 0; i < arr.length; i++) {if (i< arr.length-1) {System.out.print(arr[i]+",");}else{System.out.println(arr[i]+"]");}}}}
0 0
- 一道简单面试题和霍尔规则
- oracle一道简单面试题和一道深入面试题
- 一道简单的面试题
- 一道简单的面试题
- 一道简单的面试题
- 一道比较简单的Google面试题
- 一道华为简单面试题(C/C++)
- 一道简单的面试题(数组)
- 一道简单的支付宝面试题
- 一道简单的阶层面试题
- 一道简单的java面试题
- java参数传递一道简单面试题
- 一道有趣的面试题 简单DP?
- 一道简单PHP数组的面试题
- 一道看似简单的面试题
- 一道简单而又不简单的面试题
- 一道面试题(encode和decode)
- C++ sizeof() 和一道面试题
- Java集合框架的层次结构和使用规则梳理
- volatile关键字解析
- 探索《How Tomcat Works》 心得(五) 日志系统
- 148. Sort List 链表归并排序
- IT传奇人物
- 一道简单面试题和霍尔规则
- SCPPO(四):框架的学习
- 第16周项目——文件阅读2
- Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建
- 深入剖析ThreadLocal
- Exynos4412 中断驱动开发(二)—— 中断处理流程分析
- 同步容器
- webrtc直播音频无法静音
- HTTP编程常用消息头