gonefishing.java
来自「PKU中一些数据结构基本算法题的java实现」· Java 代码 · 共 94 行
JAVA
94 行
package PKU.GA;
import java.util.*;
/**
* ID:1042
* 贪心法
*
* @author yhm
*
*/
public class GoneFishing {
public static void main(String args[]) throws Exception {
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
int n = cin.nextInt();
if(n == 0) {
break;
}
int h = cin.nextInt();
int[] fi = new int[n];
int[] di = new int[n];
for(int i=0;i<n;i++){
fi[i]=cin.nextInt();
}
for(int i=0;i<n;i++){
di[i]=cin.nextInt();
}
int[] ti = new int[n-1];
for(int i=0;i<n-1;i++){
ti[i]=cin.nextInt();
}
solve(n,h,fi,di,ti);
}
}
static private void solve(int n,int h,int[] fi,int[] di, int ti[]){
int[] resultTime = new int[n];
Arrays.fill(resultTime, 0);
int best = -1;
for(int i=0;i<n;i++){
int resultFish = 0;
int totaltime = (h*60)/5;
if(totaltime<0){
break;
}
int[] currentFish = new int[i+1];
int[] resultTime1 = new int[n];
Arrays.fill(resultTime1, 0);
for(int j=0;j<i+1;j++){
currentFish[j] = fi[j];
}
for(int j=0;j<i;j++){
totaltime-=ti[j];
}
for(int k=0;k<totaltime;k++){
int select = 0;
for(int j=0;j<i+1;j++){
if(currentFish[j]>currentFish[select]){
select = j;
}
}
resultFish+=currentFish[select];
currentFish[select]-=di[select];
if(currentFish[select]<0){
currentFish[select] = 0;
}
resultTime1[select]++;
}
if(resultFish>best){
best=resultFish;
resultTime = resultTime1;
}
}
for(int j=0;j<n;j++){
if(j!=n-1){
System.out.print(resultTime[j]*5+", ");
}
else{
System.out.println(resultTime[j]*5+" ");
}
}
System.out.println("Number of fish expected: "+best);
System.out.println();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?