#include<stdio.h>
void dfs(int mat[100][100], int n, int x, int y, int list[2][100], int *size)
{
int i;
if( mat[x][y] == -1)
{
return;
}
if (x== n-1 && y== n-1)
{
for(i=0;i<*size;i++)
{
printf("( %d , %d ) - ", list
[0][i
], list
[1][i
]); }
return;
}
list[0][*size]=x;
list[1][*size]=y;
(*size)++;
if((x+1)<n)
{
dfs(mat,n,x+1,y,list,size);
}
if((y+1)<n)
{
dfs(mat,n,x,y+1,list,size);
}
if((y+1)<n && (x+1)<n )
{
dfs(mat,n,x+1,y+1,list,size);
}
(*size)--;
}
int main()
{
int n,o1,o2,i,j;
printf("Enter the size of the grid\n"); if(n<0)
{
return 0;
}
int mat[100][100], list[2][100];
int size = 0;
for (i=0;i<n;i++)
{
for(j=0;i<n;i++)
mat[i][j]=0;
}
printf("Enter the grid points that are offsets\n"); while(o1!=-1 && o2!=-1)
{
mat[o1][o2]=-1;
if(o1<-1 || o2<-1 || o1>=n || o2>=n || (o1==0 && o2==0) || (o1==(n-1) && o2==(n-1)) )
{
return 0;
}
}
printf("The paths for the robot are\n"); dfs(mat,n,0,0,list,&size);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4Kdm9pZCBkZnMoaW50IG1hdFsxMDBdWzEwMF0sIGludCBuLCBpbnQgeCwgaW50IHksIGludCBsaXN0WzJdWzEwMF0sIGludCAqc2l6ZSkKewogICAgaW50IGk7CiAgICBpZiggbWF0W3hdW3ldID09IC0xKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICh4PT0gbi0xICYmIHk9PSBuLTEpCiAgICB7CiAgICAgICAgZm9yKGk9MDtpPCpzaXplO2krKykKICAgICAgICB7CiAgICAgICAgcHJpbnRmKCIoICVkICwgJWQgKSAtICIsIGxpc3RbMF1baV0sIGxpc3RbMV1baV0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIiggMiAsIDIgKSIpOwogICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbGlzdFswXVsqc2l6ZV09eDsKICAgIGxpc3RbMV1bKnNpemVdPXk7CiAgICAoKnNpemUpKys7CiAgICBpZigoeCsxKTxuKQogICAgewogICAgICAgIGRmcyhtYXQsbix4KzEseSxsaXN0LHNpemUpOwogICAgfQogICAgaWYoKHkrMSk8bikKICAgIHsKICAgICAgICBkZnMobWF0LG4seCx5KzEsbGlzdCxzaXplKTsKICAgIH0KICAgIGlmKCh5KzEpPG4gJiYgKHgrMSk8biApCiAgICB7CiAgICAgICAgZGZzKG1hdCxuLHgrMSx5KzEsbGlzdCxzaXplKTsKICAgIH0KICAgICgqc2l6ZSktLTsKfQppbnQgbWFpbigpCnsKICAgIGludCBuLG8xLG8yLGksajsKICAgIHByaW50ZigiRW50ZXIgdGhlIHNpemUgb2YgdGhlIGdyaWRcbiIpOwogICAgc2NhbmYoIiVkIiwmbik7CiAgICBpZihuPDApCiAgICB7CiAgICAgICAgcHJpbnRmKCJJbnZhbGlkIElucHV0Iik7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBpbnQgbWF0WzEwMF1bMTAwXSwgbGlzdFsyXVsxMDBdOwogICAgaW50IHNpemUgPSAwOwogICAgZm9yIChpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBmb3Ioaj0wO2k8bjtpKyspCiAgICAgICAgICAgIG1hdFtpXVtqXT0wOwogICAgfQogICAgcHJpbnRmKCJFbnRlciB0aGUgZ3JpZCBwb2ludHMgdGhhdCBhcmUgb2Zmc2V0c1xuIik7CiAgICB3aGlsZShvMSE9LTEgJiYgbzIhPS0xKQogICAgewogICAgICAgIHNjYW5mKCIgJWQgJWQiLCZvMSwmbzIpOwogICAgICAgIG1hdFtvMV1bbzJdPS0xOwogICAgICAgIGlmKG8xPC0xIHx8IG8yPC0xIHx8IG8xPj1uIHx8IG8yPj1uIHx8IChvMT09MCAmJiBvMj09MCkgfHwgKG8xPT0obi0xKSAmJiBvMj09KG4tMSkpICkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiSW52YWxpZCBJbnB1dCIpOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICB9CiAgICBwcmludGYoIlRoZSBwYXRocyBmb3IgdGhlIHJvYm90IGFyZVxuIik7CiAgICBkZnMobWF0LG4sMCwwLGxpc3QsJnNpemUpOwogICAgcmV0dXJuIDA7Cn0=