#include #include #include #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) void find_comp( int m, int n, int a[m][n], int label[m][n] ) { int old_label[m][n]; int change, itmax = 100*m*n; // for ( int i=0; i 0 ) label[i][j] = MAX(label[i][j],old_label[i][j-1]); if ( j < n-1 ) label[i][j] = MAX(label[i][j],old_label[i][j+1]); if ( i > 0 ) label[i][j] = MAX(label[i][j],old_label[i-1][j]); if ( i < m-1 ) label[i][j] = MAX(label[i][j],old_label[i+1][j]); if ( label[i][j] != old_label[i][j] ) change = 1; } } } for ( int i=0; i 3*(RAND_MAX/4) ) a[i][j]=1; else a[i][j]=0; } } void write_pix_orig(int m, int n, int a[m][n]) { char c; for ( int i=0; i0) ? 'X' : '.'; printf("%c",c); } printf("\n"); } } // Does not print unique label but gives some hint what the solution looks like... void write_pix_comp( int m, int n, int label[m][n] ) { char c; int k; char labc[]= "ABCDEFGHIJKLMNOPQRSTUVZYZabcdefghijklmnopqrstuvxyz1234567890"; for ( int i=0; i