刚开的算法课,老师还没讲到具体算法。
但是每周要做两道题,实在不太会,求解,C语言编写。
![
参考:
http://blog.csdn.net/gubojun123/article/details/8036482
第一个就是使用栈,先进后出,按顺序压栈,出栈就得
第二个就是一个函数 这里计算最大值 ,取得是 6 4 5 三天 刷题15 ,最小题数 4 60
解决方法,由于取得必须是一段连续的时间 ,最简单的方式是求出所有情况 ,这里是 15种 然后求最小值,
好一点的方法是
(n1+n2+n3++...N)*n 这是题中给出的计算公式 , n 表示最小值, 往后读取数据 ,如果 新加入的N的值 大于 n 那么就直接读入 ,否则计算值判断 大小
问题2:参考:http://www.cnblogs.com/CCBB/archive/2009/04/25/1443455.html
package com.answer.cal;
public class PersonValue {
/**
* @param args
*/
public static void main(String[] args) {
int[] practises = { 3, 1, 6, 4, 5, 2 };
int value = CalMyValue(practises);
System.out.println("人生价值为:"+value);
}
//计算人生价值
public static int CalMyValue(int[] practises) {
int value = 0;
for (int i = 0; i < practises.length; i++) {
for (int j = i; j < practises.length; j++) {
int[] tem = getTem(practises, i, j);
int temValue = getSum(tem) * getMin(tem);
value = value >= temValue ? value : temValue;
}
}
return value;
}
//计算数组之和
private static int getSum(int[] tem) {
int sum = 0;
for(int i = 0; i < tem.length ; i++){
sum += tem[i];
}
return sum;
}
//截取数组
private static int[] getTem(int[] practises, int i, int j) {
// TODO Auto-generated method stub
int[] tem = new int[j - i + 1];
if (j == i) {
tem[0] = practises[i];
} else {
for (int k = i; k <= j; k++) {
tem[k - i] = practises[k];
}
}
return tem;
}
//获取最小值
public static int getMin(int[] num) {
int min = num[0];
for (int i = 1; i < num.length; i++) {
min = min <= num[i] ? min : num[i];
}
return min;
}
}
第二题做了一下,你也试试吧,思路在代码中比较清晰,不做过多的注释