#include #include #include int min(int a,int b) { if(acols) { int final[newheight][newwidth]; } //SHRINKING for(;cols>newwidth;cols--) { //Grayscale for(n=0;nMAXM) MAXM=M[n][m]; } } //Finding minimum path int mini=M[rows-1][0]; int mincol=0; for(n=0;n0;n--) { if(M[n-1][minpath[n]-1]<=M[n-1][minpath[n]] && M[n-1][minpath[n]-1]<=M[n-1][minpath[n]+1]) { minpath[n-1]=minpath[n]-1; } if(M[n-1][minpath[n]]<=M[n-1][minpath[n]-1] && M[n-1][minpath[n]]<=M[n-1][minpath[n]+1]) { minpath[n-1]=minpath[n]; } if(M[n-1][minpath[n]+1]<=M[n-1][minpath[n]] && M[n-1][minpath[n]+1]<=M[n-1][minpath[n]-1]) { minpath[n-1]=minpath[n]+1; } } //Removing minimum path for(n=0;nnewheight;rows--) { //Grayscale for(n=0;nMAXM) MAXM=M[m][n]; } } if(rows==newheight+1) { outfile=fopen("M.ppm","w"); fprintf(outfile,"P6\n%d %d\n%d\n",cols,rows,max); for(n=0;n0;n--) { if(M[n-1][minpath2[n]-1]<=M[n-1][minpath2[n]] && M[n-1][minpath2[n]-1]<=M[n-1][minpath2[n]+1]) { minpath2[n-1]=minpath2[n]-1; } if(M[n-1][minpath2[n]]<=M[n-1][minpath2[n]-1] && M[n-1][minpath2[n]]<=M[n-1][minpath2[n]+1]) { minpath2[n-1]=minpath2[n]; } if(M[n-1][minpath2[n]+1]<=M[n-1][minpath2[n]] && M[n-1][minpath2[n]+1]<=M[n-1][minpath2[n]-1]) { minpath2[n-1]=minpath2[n]+1; } } //Removing minimum path for(n=0;n