如图,仅仅交换了入参位置,为什么得出的结果不同呢
import java.util.Arrays;
import java.util.Scanner;
public class 士兵过河 {
public static void main(String[] args){
Scanner in =new Scanner(System.in);
int n=in.nextInt();
int t= in.nextInt();
in.nextLine();
String[] str=in.nextLine().split(" ");
int[] num=new int[n];
int[] dp=new int[n];//j+1个人过河需要的最大时间
//Arrays.fill(dp,Integer.MAX_VALUE);
for(int i=0;i<n;i++){
num[i]=Integer.valueOf(str[i]);
}
Arrays.sort(num);
dp[0]=num[0];
if(num[0]>t){
System.out.println("0 0");
return;
}
dp[1]=bijiao(num[0],num[1]);
if(dp[1]>t){
System.out.println(1+" "+dp[0]);
return;
}
for(int i=2;i<n;i++){
dp[i]=Math.min(dp[i-1]+bijiao(num[0],num[i])+num[0],
dp[i-2]+num[0]+bijiao(num[i-1],num[i])+num[1]+bijiao(num[0],num[1]));
if(dp[i]>t){
System.out.println(i+" "+dp[i-1]);
return;
}
}
System.out.println(n+" "+dp[n-1]);
}
public static int bijiao(int b,int a){
if(a*10<b){
return a*10;
}
return b;
}
}
参数位置都换了,最终结果不一样很正常啊,
比如 你传入 3,4
int a, int b // a = 3, b = 4
int b, int a // b = 3, a = 4
class Node {
public int data;//一个节点存在三个区域
public Node prev;
public Node next;
public Node(int data) {//构造方法用于初始化实例对象
this.data = data;
}
}
public class MyLinkedList {
public Node head;
public Node tail;
public void addFirst(int data);
//1.头插法
public void addLast(int data);
//2.尾插法
public void display();
//3.打印链表
public boolean contains(int key);
//4.查找是否包含关键字key是否在单链表当中
public int size();
//5.求链表长度
public void addIndex(int index,int data);
//6.任意位置插入,第一个数据节点为0号下标
public void remove(int key);
//7.删除第一次出现关键字为key的节点
public void removeAllKey(int key);
//8.删除所有值为key的节点
public void clear();
//9.清空链表
}
以下即为双向链表的各接口的实现
🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍐 🍍 🍅 🏀 💡 🔑