Ideone.com requires JavaScript to work.
fork(8) download loading...
  1. /* package whatever; // don't place package name! */
  2. import java.util.*;
  3. import java.lang.*;
  4. import java.io.*;
  5. /* Name of the class has to be "Main" only if the class is public. */
  6. class Ideone
  7. {
  8. public static int getMaxValue_solution1(int[][] values) {
  9. int rows = values.length;
  10. int cols = values[0].length;
  11. int[][] maxValues = new int[rows][cols];
  12. for(int i = 0; i < rows; ++i) {
  13. for(int j = 0; j < cols; ++j) {
  14. int left = 0;
  15. int up = 0;
  16. if(i > 0) {
  17. up = maxValues[i - 1][j];
  18. }
  19. if(j > 0) {
  20. left = maxValues[i][j - 1];
  21. }
  22. maxValues[i][j] = Math.max(left, up) + values[i][j];
  23. }
  24. }
  25. return maxValues[rows - 1][cols - 1];
  26. }
  27. public static int getMaxValue_solution2(int[][] values) {
  28. int rows = values.length;
  29. int cols = values[0].length;
  30. int[] maxValues = new int[cols];
  31. for(int i = 0; i < rows; ++i) {
  32. for(int j = 0; j < cols; ++j) {
  33. int left = 0;
  34. int up = 0;
  35. if(i > 0) {
  36. up = maxValues[j];
  37. }
  38. if(j > 0) {
  39. left = maxValues[j - 1];
  40. }
  41. maxValues[j] = Math.max(left, up) + values[i][j];
  42. }
  43. }
  44. return maxValues[cols - 1];
  45. }
  46. // ----------------------- TEST CODE -----------------------
  47. private static void test(String testName, int[][] values, int expected) {
  48. if(getMaxValue_solution1(values) == expected) {
  49. System.out.println(testName + ": solution1 passed.");
  50. }
  51. else {
  52. System.out.println(testName + ": solution1 FAILED.");
  53. }
  54. if(getMaxValue_solution2(values) == expected) {
  55. System.out.println(testName + ": solution2 passed.");
  56. }
  57. else {
  58. System.out.println(testName + ": solution2 FAILED.");
  59. }
  60. }
  61. private static void test1() {
  62. int[][] values = {
  63. {1, 2, 3},
  64. {4, 5, 6},
  65. {7, 8, 9}
  66. };
  67. int expected = 29;
  68. test("test1", values, expected);
  69. }
  70. private static void test2() {
  71. int[][] values = {
  72. {1, 10, 3, 8},
  73. {12, 2, 9, 6},
  74. {5, 7, 4, 11},
  75. {3, 7, 16, 5}
  76. };
  77. int expected = 53;
  78. test("test2", values, expected);
  79. }
  80. private static void test3() {
  81. int[][] values = {
  82. {1, 10, 3, 8}
  83. };
  84. int expected = 22;
  85. test("test3", values, expected);
  86. }
  87. private static void test4() {
  88. int[][] values = {
  89. {1},
  90. {12},
  91. {5},
  92. {3}
  93. };
  94. int expected = 21;
  95. test("test4", values, expected);
  96. }
  97. private static void test5() {
  98. int[][] values = {
  99. {3}
  100. };
  101. int expected = 3;
  102. test("test5", values, expected);
  103. }
  104. public static void main(String [] args) {
  105. test1();
  106. test2();
  107. test3();
  108. test4();
  109. test5();
  110. }
  111. }
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldE1heFZhbHVlX3NvbHV0aW9uMShpbnRbXVtdIHZhbHVlcykgewogICAgICAgIGludCByb3dzID0gdmFsdWVzLmxlbmd0aDsKICAgICAgICBpbnQgY29scyA9IHZhbHVlc1swXS5sZW5ndGg7CiAgICAgICAgCiAgICAgICAgaW50W11bXSBtYXhWYWx1ZXMgPSBuZXcgaW50W3Jvd3NdW2NvbHNdOwogICAgICAgIAogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCByb3dzOyArK2kpIHsKICAgICAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IGNvbHM7ICsraikgewogICAgICAgICAgICAgICAgaW50IGxlZnQgPSAwOwogICAgICAgICAgICAgICAgaW50IHVwID0gMDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYoaSA+IDApIHsKICAgICAgICAgICAgICAgICAgICB1cCA9IG1heFZhbHVlc1tpIC0gMV1bal07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYoaiA+IDApIHsKICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbWF4VmFsdWVzW2ldW2ogLSAxXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgbWF4VmFsdWVzW2ldW2pdID0gTWF0aC5tYXgobGVmdCwgdXApICsgdmFsdWVzW2ldW2pdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiBtYXhWYWx1ZXNbcm93cyAtIDFdW2NvbHMgLSAxXTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0TWF4VmFsdWVfc29sdXRpb24yKGludFtdW10gdmFsdWVzKSB7CiAgICAgICAgaW50IHJvd3MgPSB2YWx1ZXMubGVuZ3RoOwogICAgICAgIGludCBjb2xzID0gdmFsdWVzWzBdLmxlbmd0aDsKICAgICAgICAKICAgICAgICBpbnRbXSBtYXhWYWx1ZXMgPSBuZXcgaW50W2NvbHNdOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCByb3dzOyArK2kpIHsKICAgICAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IGNvbHM7ICsraikgewogICAgICAgICAgICAgICAgaW50IGxlZnQgPSAwOwogICAgICAgICAgICAgICAgaW50IHVwID0gMDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYoaSA+IDApIHsKICAgICAgICAgICAgICAgICAgICB1cCA9IG1heFZhbHVlc1tqXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZihqID4gMCkgewogICAgICAgICAgICAgICAgICAgIGxlZnQgPSBtYXhWYWx1ZXNbaiAtIDFdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBtYXhWYWx1ZXNbal0gPSBNYXRoLm1heChsZWZ0LCB1cCkgKyB2YWx1ZXNbaV1bal07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuIG1heFZhbHVlc1tjb2xzIC0gMV07CiAgICB9CiAgICAKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRFU1QgQ09ERSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB0ZXN0KFN0cmluZyB0ZXN0TmFtZSwgaW50W11bXSB2YWx1ZXMsIGludCBleHBlY3RlZCkgewogICAgICAgIGlmKGdldE1heFZhbHVlX3NvbHV0aW9uMSh2YWx1ZXMpID09IGV4cGVjdGVkKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0ZXN0TmFtZSArICI6IHNvbHV0aW9uMSBwYXNzZWQuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odGVzdE5hbWUgKyAiOiBzb2x1dGlvbjEgRkFJTEVELiIpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZihnZXRNYXhWYWx1ZV9zb2x1dGlvbjIodmFsdWVzKSA9PSBleHBlY3RlZCkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odGVzdE5hbWUgKyAiOiBzb2x1dGlvbjIgcGFzc2VkLiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRlc3ROYW1lICsgIjogc29sdXRpb24yIEZBSUxFRC4iKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDEoKSB7CiAgICAgICAgaW50W11bXSB2YWx1ZXMgPSB7CiAgICAgICAgICAgIHsxLCAyLCAzfSwKICAgICAgICAgICAgezQsIDUsIDZ9LAogICAgICAgICAgICB7NywgOCwgOX0KICAgICAgICB9OwogICAgICAgIGludCBleHBlY3RlZCA9IDI5OwogICAgICAgIHRlc3QoInRlc3QxIiwgdmFsdWVzLCBleHBlY3RlZCk7CiAgICB9CiAgICAKICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDIoKSB7CiAgICAgICAgaW50W11bXSB2YWx1ZXMgPSB7CiAgICAgICAgICAgIHsxLCAxMCwgMywgOH0sCiAgICAgICAgICAgIHsxMiwgMiwgOSwgNn0sCiAgICAgICAgICAgIHs1LCA3LCA0LCAxMX0sCiAgICAgICAgICAgIHszLCA3LCAxNiwgNX0KICAgICAgICB9OwogICAgICAgIGludCBleHBlY3RlZCA9IDUzOwogICAgICAgIHRlc3QoInRlc3QyIiwgdmFsdWVzLCBleHBlY3RlZCk7CiAgICB9CiAgICAKICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDMoKSB7CiAgICAgICAgaW50W11bXSB2YWx1ZXMgPSB7CiAgICAgICAgICAgIHsxLCAxMCwgMywgOH0KICAgICAgICB9OwogICAgICAgIGludCBleHBlY3RlZCA9IDIyOwogICAgICAgIHRlc3QoInRlc3QzIiwgdmFsdWVzLCBleHBlY3RlZCk7CiAgICB9CiAgICAKICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDQoKSB7CiAgICAgICAgaW50W11bXSB2YWx1ZXMgPSB7CiAgICAgICAgICAgIHsxfSwKICAgICAgICAgICAgezEyfSwKICAgICAgICAgICAgezV9LAogICAgICAgICAgICB7M30KICAgICAgICB9OwogICAgICAgIGludCBleHBlY3RlZCA9IDIxOwogICAgICAgIHRlc3QoInRlc3Q0IiwgdmFsdWVzLCBleHBlY3RlZCk7CiAgICB9CiAgICAKICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDUoKSB7CiAgICAgICAgaW50W11bXSB2YWx1ZXMgPSB7CiAgICAgICAgICAgIHszfQogICAgICAgIH07CiAgICAgICAgaW50IGV4cGVjdGVkID0gMzsKICAgICAgICB0ZXN0KCJ0ZXN0NSIsIHZhbHVlcywgZXhwZWN0ZWQpOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgdGVzdDEoKTsKICAgICAgICB0ZXN0MigpOwogICAgICAgIHRlc3QzKCk7CiAgICAgICAgdGVzdDQoKTsKICAgICAgICB0ZXN0NSgpOwogICAgfQp9
Success #stdin #stdout 0.08s 380160KB
stdin
Standard input is empty
stdout
test1: solution1 passed.
test1: solution2 passed.
test2: solution1 passed.
test2: solution2 passed.
test3: solution1 passed.
test3: solution2 passed.
test4: solution1 passed.
test4: solution2 passed.
test5: solution1 passed.
test5: solution2 passed.
https://ideone.com/2vLRMk
Max value of gift from a matrix
language:
Java (HotSpot 12)
created:
11 years ago
visibility:
public

Share or Embed source code

Discover > Sphere Engine API

The brand new service which powers Ideone!

Discover > IDE Widget

Widget for compiling and running the source code in a web browser!

AltStyle によって変換されたページ (->オリジナル) /