class AllPathsPrinter {
int [][] array;
int rowCount;
int colCount;
public AllPathsPrinter(int [][]array){
this.array = array;
rowCount = array.length;
colCount = array[0].length;
}
public void printAllPaths
(int currX,
int currY,
String path,
int sum
){ if(currX == rowCount-1){
for(int j=currY;j<=colCount-1;j++){
sum+=array[currX][j];
path = path + array[currX][j];
}
System.
out.
println("Path : " + path
+" sum "+sum
); return;
}
if(currY == colCount-1){
for(int i=currX;i<=rowCount-1;i++){
sum+=array[i][currY];
path = path + array[i][currY];
}
System.
out.
println("Path : " + path
+"sum "+sum
); return;
}
sum+=array[currX][currY];
path = path + array[currX][currY];
printAllPaths(currX+1, currY, path,sum);
printAllPaths(currX, currY+1, path,sum);
printAllPaths(currX+1, currY+1, path,sum);
}
public static void main
(String args
[]){
int [][] ar = new int[][]{{1, 2, 3}, {4, 5, 6}};
AllPathsPrinter allPathsPrinter = new AllPathsPrinter(ar);
allPathsPrinter.printAllPaths(0,0,"",0);
}
}
IGNsYXNzIEFsbFBhdGhzUHJpbnRlciB7CiAKICAgIGludCBbXVtdIGFycmF5OwogICAgaW50IHJvd0NvdW50OwogICAgaW50IGNvbENvdW50OwogCiAKICAgIHB1YmxpYyBBbGxQYXRoc1ByaW50ZXIoaW50IFtdW11hcnJheSl7CiAKICAgICAgICB0aGlzLmFycmF5ID0gYXJyYXk7CiAgICAgICAgcm93Q291bnQgPSBhcnJheS5sZW5ndGg7CiAgICAgICAgY29sQ291bnQgPSBhcnJheVswXS5sZW5ndGg7CiAKICAgIH0KIAogCiAgICBwdWJsaWMgdm9pZCBwcmludEFsbFBhdGhzKGludCBjdXJyWCwgaW50IGN1cnJZLCBTdHJpbmcgcGF0aCxpbnQgc3VtKXsKICAgICAgICBpZihjdXJyWCA9PSByb3dDb3VudC0xKXsKICAgICAgICAgICAgZm9yKGludCBqPWN1cnJZO2o8PWNvbENvdW50LTE7aisrKXsKICAgICAgICAgICAgICAgIHN1bSs9YXJyYXlbY3VyclhdW2pdOwogICAgICAgICAgICAgICAgcGF0aCA9IHBhdGggKyBhcnJheVtjdXJyWF1bal07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQYXRoIDogIiArIHBhdGgrIiBzdW0gIitzdW0pOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogCiAgICAgICAgaWYoY3VyclkgPT0gY29sQ291bnQtMSl7CiAgICAgICAgICAgIGZvcihpbnQgaT1jdXJyWDtpPD1yb3dDb3VudC0xO2krKyl7CiAgICAgICAgICAgIAlzdW0rPWFycmF5W2ldW2N1cnJZXTsKICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoICsgYXJyYXlbaV1bY3VyclldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUGF0aCA6ICIgKyBwYXRoKyJzdW0gIitzdW0pOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHN1bSs9YXJyYXlbY3VyclhdW2N1cnJZXTsKICAgICAgICBwYXRoID0gcGF0aCArIGFycmF5W2N1cnJYXVtjdXJyWV07CiAgICAgICAgcHJpbnRBbGxQYXRocyhjdXJyWCsxLCBjdXJyWSwgcGF0aCxzdW0pOwogICAgICAgIHByaW50QWxsUGF0aHMoY3VyclgsIGN1cnJZKzEsIHBhdGgsc3VtKTsKIAkJcHJpbnRBbGxQYXRocyhjdXJyWCsxLCBjdXJyWSsxLCBwYXRoLHN1bSk7CiAKICAgIH0KIAogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSl7CiAKICAgICAgICBpbnQgW11bXSBhciA9IG5ldyBpbnRbXVtde3sxLCAyLCAzfSwgezQsIDUsIDZ9fTsKICAgICAgICBBbGxQYXRoc1ByaW50ZXIgYWxsUGF0aHNQcmludGVyID0gbmV3IEFsbFBhdGhzUHJpbnRlcihhcik7CiAgICAgICAgYWxsUGF0aHNQcmludGVyLnByaW50QWxsUGF0aHMoMCwwLCIiLDApOwogCiAKICAgIH0KIAogCn0=