fork download
  1. #include <iostream>
  2.  
  3.  
  4. size_t count_rects(char* arr, size_t N){
  5. size_t n = 0;
  6.  
  7. for(size_t i = 0; i < N; ++i){
  8. for(size_t j = 0; j < N; ++j){
  9. if(! arr[i*N + j])
  10. continue;
  11.  
  12. for(size_t r = i; r < N; ++r){
  13.  
  14. if(! arr[r*N + j])
  15. break;
  16.  
  17. for(size_t c = j; c < N; ++c){
  18. if(! arr[r*N + c])
  19. break;
  20.  
  21. arr[r*N + c] = 0;
  22. }
  23. }
  24. ++n;
  25. }
  26. }
  27. return n;
  28. }
  29.  
  30.  
  31.  
  32. int main(void){
  33. const size_t N = 10;
  34. char arr[N*N] = {
  35. 0,1,1,1,0,0,0,0,0,0,
  36. 0,1,1,1,0,0,0,0,0,0,
  37. 0,1,1,1,0,1,1,1,0,0,
  38. 0,0,0,0,0,1,1,1,0,0,
  39. 0,0,0,0,0,0,0,0,0,0,
  40. 1,1,0,1,1,1,1,0,1,1,
  41. 1,1,0,1,1,1,1,0,1,1,
  42. 1,1,0,0,0,0,0,0,0,0,
  43. 1,1,0,1,1,0,0,1,1,1,
  44. 0,0,0,1,1,0,0,1,1,1
  45. };
  46.  
  47. for(size_t i = 0; i < N; ++i){
  48. for(size_t j = 0; j < N; ++j)
  49. std::cout << (char)(arr[i*N+j] + '0');
  50. std::cout << std::endl;
  51. }
  52.  
  53. size_t n = count_rects(arr, N);
  54. std::cout << "count rects: " << n << std::endl;
  55. return 0;
  56. }
Success #stdin #stdout 0s 3140KB
stdin
Standard input is empty
stdout
0111000000
0111000000
0111011100
0000011100
0000000000
1101111011
1101111011
1100000000
1101100111
0001100111
count rects: 7