1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import java.util.*; class Main { public static void main(String[] args) { int[][] limits = { { 5, 7 }, // first variable ranges from 5 to 7 { 1, 3 } // second variable ranges from 1 to 3 }; CombinationIterator iter = new CombinationIterator(limits); while (iter.hasNext()) System.out.println(Arrays.toString(iter.next())); } } class CombinationIterator implements Iterator<int[]> { int[][] limits; int[] current; public CombinationIterator(int[][] limits) { this.limits = limits; // Initialize all variables to their minimums. current = new int[limits.length]; for (int i = 0; i < limits.length; i++) current[i] = limits[i][0]; } @Override public boolean hasNext() { return current != null; } @Override public int[] next() { if (current == null) throw new IllegalStateException("No more combinations."); int[] toReturn = current.clone(); for (int i = limits.length - 1; i >= -1; i--) { if (i == -1) { current = null; break; } if (current[i] < limits[i][1]) { current[i]++; break; } else current[i] = limits[i][0]; } return toReturn; } @Override public void remove() { throw new UnsupportedOperationException("Can't remove combinations"); } } |
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50W11bXSBsaW1pdHMgPSB7CiAgICAgICAgICAgICAgICB7IDUsIDcgfSwgICAvLyBmaXJzdCAgdmFyaWFibGUgcmFuZ2VzIGZyb20gNSB0byA3CiAgICAgICAgICAgICAgICB7IDEsIDMgfSAgICAvLyBzZWNvbmQgdmFyaWFibGUgcmFuZ2VzIGZyb20gMSB0byAzCiAgICAgICAgfTsKICAgICAgICAKICAgICAgICBDb21iaW5hdGlvbkl0ZXJhdG9yIGl0ZXIgPSBuZXcgQ29tYmluYXRpb25JdGVyYXRvcihsaW1pdHMpOwogICAgICAgIAogICAgICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEFycmF5cy50b1N0cmluZyhpdGVyLm5leHQoKSkpOwogICAgfQp9CgpjbGFzcyBDb21iaW5hdGlvbkl0ZXJhdG9yIGltcGxlbWVudHMgSXRlcmF0b3I8aW50W10+IHsKICAgIAogICAgaW50W11bXSBsaW1pdHM7CiAgICBpbnRbXSBjdXJyZW50OwogICAgCiAgICBwdWJsaWMgQ29tYmluYXRpb25JdGVyYXRvcihpbnRbXVtdIGxpbWl0cykgewogICAgICAgIHRoaXMubGltaXRzID0gbGltaXRzOwogICAgICAgIAogICAgICAgIC8vIEluaXRpYWxpemUgYWxsIHZhcmlhYmxlcyB0byB0aGVpciBtaW5pbXVtcy4KICAgICAgICBjdXJyZW50ID0gbmV3IGludFtsaW1pdHMubGVuZ3RoXTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpbWl0cy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgY3VycmVudFtpXSA9IGxpbWl0c1tpXVswXTsKICAgIH0KICAgIAogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgewogICAgICAgIHJldHVybiBjdXJyZW50ICE9IG51bGw7CiAgICB9CiAgICAKICAgIEBPdmVycmlkZQogICAgcHVibGljIGludFtdIG5leHQoKSB7CiAgICAgICAgCiAgICAgICAgaWYgKGN1cnJlbnQgPT0gbnVsbCkKICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiTm8gbW9yZSBjb21iaW5hdGlvbnMuIik7CiAgICAgICAgCiAgICAgICAgaW50W10gdG9SZXR1cm4gPSBjdXJyZW50LmNsb25lKCk7CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaSA9IGxpbWl0cy5sZW5ndGggLSAxOyBpID49IC0xOyBpLS0pIHsKICAgICAgICAgICAgaWYgKGkgPT0gLTEpIHsKICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBudWxsOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0gaWYgKGN1cnJlbnRbaV0gPCBsaW1pdHNbaV1bMV0pIHsKICAgICAgICAgICAgICAgIGN1cnJlbnRbaV0rKzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIGN1cnJlbnRbaV0gPSBsaW1pdHNbaV1bMF07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiB0b1JldHVybjsKICAgIH0KCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyB2b2lkIHJlbW92ZSgpIHsKICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIkNhbid0IHJlbW92ZSBjb21iaW5hdGlvbnMiKTsKICAgIH0KfQ==
-
upload with new input
-
result: Success time: 0.05s memory: 213440 kB returned value: 0
[5, 1] [5, 2] [5, 3] [6, 1] [6, 2] [6, 3] [7, 1] [7, 2] [7, 3]


