- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
UVA链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=464
我不知道自己现在在做什么。我不知道为什么我会产生错误的值。在寻找最短路径后,我打印出了数组。它会产生这样的结果:
[0, 3, 8, 8, 4]
[3, 0, 5, 11, 7]
[8, 5, 0, 9, 12]
[8, 11, 9, 0, 4]
[4, 7, 12, 4, 0]
示例输入是:
1
0 3 22 -1 4
3 0 5 -1 -1
22 5 0 9 20
-1 -1 9 0 4
4 -1 20 4 0
5 17 8 3 1
1 3
3 5
2 4
使用示例输入,我生成输出:
From 1 to 3 :
Path: 1-->2-->3
Total cost :8
From 3 to 5 :
Path: 3-->2-->5
Total cost :12
From 2 to 4 :
Path: 2-->5-->4
Total cost :11
如果我查看我的数组,它似乎是正确的。但正确答案是:
From 1 to 3 :
Path: 1-->5-->4-->3
Total cost : 21
From 3 to 5 :
Path: 3-->4-->5
Total cost : 16
From 2 to 4 :
Path: 2-->1-->5-->4
Total cost : 17
<小时/>
我想我错过了添加税款,但我不知道在哪里添加。我尝试在执行最短路径时将 tax[j]
添加到 path[i][j]
,然后减去 tax[x-1]
和 tax[y-1]
(x-1
是我的来源,y-1
是我的目的地)。它不起作用,并且弄乱了我的路径数组(它为循环提供了值;我真的不需要它)。我真的不知道该把税放在哪里。
这是我的引用代码:
import java.util.*;
public class Main{
public static final int INF = 9999999;
public static int[][] path;
public static int[][] next;
public static int[] tax;
public static void main(String[] adsf){
Scanner pp = new Scanner(System.in);
int testCases = pp.nextInt();
boolean first = true;
pp.nextLine();
pp.nextLine();
while(testCases-- >0){
String[] s1 = pp.nextLine().split(" ");
int size = s1.length;
path = new int[size][size];
next = new int[size][size];
for(int i = 0; i < path.length; i++)
Arrays.fill(path[i],INF);
tax = new int[size];
for(int j = 0; j < path[0].length; j++){
path[0][j] = Integer.parseInt(s1[j]);
if(path[0][j]==-1)
path[0][j]=INF;
}
for(int i = 1; i < path.length;i++){
s1 = pp.nextLine().split(" ");
for(int j = 0; j < path[0].length; j++){
path[i][j] = Integer.parseInt(s1[j]);
if(path[i][j]==-1)
path[i][j]=INF;
}
}
for(int k=0; k<tax.length;k++){
tax[k] = pp.nextInt();
} pp.nextLine();
apsp();
int x,y;
//for(int i = 0; i < size; i++)
//System.out.println(Arrays.toString(path[i]));
while(pp.hasNextInt()){
if(!first)
System.out.println();
x=pp.nextInt();
y=pp.nextInt();
int cost = path[x-1][y-1];
System.out.println("From "+x+" to "+y+" :");
System.out.print("Path: ");
ArrayList<Integer> print = getpath(x-1,y-1);
for(int l = 0; l < print.size(); l++){
System.out.print(print.get(l)+1);
if(l!=print.size()-1) System.out.print("-->");
else System.out.println();
}
System.out.println("Total cost :"+cost);
first = false;
}
}
}
public static void apsp(){
for(int k=0;k<path.length;k++){
for(int i=0;i<path.length;i++){
for(int j=0;j<path.length;j++){
if (path[i][k] + path[k][j] + tax[j] < path[i][j] + tax[j]) {
path[i][j] = path[i][k]+path[k][j];
next[i][j] = k;
} else{
path[i][j] = path[i][j];
}
}
}
}
}
public static ArrayList<Integer> getpath (int i, int j) {
ArrayList<Integer> pat = getMidPath(i,j);
pat.add(0,i);
pat.add(j);
return pat;
}
public static ArrayList<Integer> getMidPath(int i, int j){
if(next[i][j]==0)
return new ArrayList<Integer>();
ArrayList<Integer> pat = new ArrayList<Integer>();
pat.addAll(getMidPath(i,next[i][j]));
pat.add(next[i][j]);
pat.addAll(getMidPath(next[i][j],j));
return pat;
}
}
最佳答案
适用税款:
whenever any cargo passing through one city, except for the source and the destination cities.
如果你有一条路径,那么你:
a -> b -> c -> d
然后您应该包括路径的成本 (a,b) + 税(b) + (b,c) + 税(c) + (c,d)。
为了将其实现到您的算法中,您应该能够将城市税添加到路径长度中,如下所示:
如果您知道从 a 开始并在 d 结束,则任何到城市 x 的有向路径(其中 x 不是 a 或 b)都应被视为 x 的成本 + 城市 x 的税费。
您需要将路径成本值恢复为要计算其值(value)的下一条路径的原始值,并为新的起点和目的地重新添加税值。
关于java - UVA#523 最低运输成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673942/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
好吧,很难找到答案,因为我不知道如何用英语表达这个问题!所以, 我正在尝试做最长的午睡问题: https://uva.onlinejudge.org/external/101/10191.pdf 我的
我正在尝试了解 UVA 问题 1193 的示例解决方案: 问题陈述: 解决方法: #include #include #include #include #include #include
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
如何将最长公共(public)子序列简化为 O(nlog n) 最长递增子序列问题 10635 uva .我需要一些有关解决问题的逻辑方面的帮助。 最佳答案 对于两个角色之一(假设是公主)的路线的每一
这是实际问题的链接,here 我已多次提交代码,但每次都会出现编译错误。原始消息是 "Main.java:4: error: class Egypt is public, should be decl
我认为这个问题可以通过平方根int数来解决。 为什么此代码显示错误的答案.....? #include #include int main(){ long int n; while(
UVA链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem
所以我试图解决 uva 11959 Dice .但是问题给出的第三个例子给了我错误的答案。然后我发现如果我改变 cin >> d1 >> d2; 到 scanf("%lx %lx", &d1, &d2
注意下面的评论。由于 GCC 中的错误,它无法在 UVA 上编译。 #include #include #include #include #include class Board { pu
这是我第一次使用在线判断,我尝试了一个简单的程序来熟悉环境。 这是 question . 我按照下面的方法解决了,但是得到了一个错误的答案! #include #include #include in
我的代码需要更多测试用例,它显示了正确的答案,但 UVa 仍然不接受它。 指令是,当收到请求时,它们会根据预定的主题列表进行分类。每一位支持人员都负责这些主题中的一个或多个,并且每个主题都分配有一名或
我正在研究 UVa #112 Tree Summing .我有我认为应该可行的解决方案,但由于我对问题的基本误解,它没有被在线法官接受。考虑以下输入: -1 (-1()()) 77 (77(1()()
所有的测试用例我都试过了,但是在线判断还是给我一个错误的答案 https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&pag
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我正在尝试为 UVa 594 "One Little, Two Little, Three Little Endians" 编写 Java 代码. 长话短说:问题在于从输入流中获取输入并将小端转换为大
我在解决扫雷器问题时遇到了麻烦,因为我得到的索引超出范围并且无法弄清楚原因: Here is the link of the problem 我认为我的代码效率不高,但我只想解决这个问题,这里是代码:
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我正在尝试解决 UVA 417 ,但我无法这样做。我见过的所有解决方案首先生成所有可能的值,将它们存储在映射中,然后搜索以找到所需的字符串。这对我来说似乎很不优雅。没有办法从数学上解决这个问题吗? 考
我是一名优秀的程序员,十分优秀!