• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メッシュの統計処理)

メッシュの統計処理についての質問

このQ&Aのポイント
  • メッシュの統計処理についての質問です。プログラムのアルゴリズムを書く方法を教えてください。
  • メッシュのブロックごとのヒストグラムを作成したいと考えています。アルゴリズムのフローを教えてください。
  • メッシュのブロックごとにヒストグラムを作成するアルゴリズムの書き方について質問です。アドバイスをいただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

   訂正。 void func1(int map[][20], int hist[], int i, int j) { if(i < 0 || 13 < i || j < 0 || 19 < j) return; if(map[i][j] <= 0) return; hist[map[i][j] - 1] ++; map[i][j] *= -1; func1(map, hist, i + 1, j); func1(map, hist, i, j - 1); func1(map, hist, i - 1, j); func1(map, hist, i, j + 1); return; }  

hamu-september
質問者

お礼

わざわざプログラムまで書いてもらって、 ありがとうございます。 無事に解決することができました。

その他の回答 (1)

回答No.1

   こんな感じ? #include <stdio.h> void print(int hist[], int i, int j) { int k, l; printf("(%d, %d)\n", i + 1, j + 1); for(k = 0; k < 6; k ++){ printf("%d|", k + 1); for(l = 0; l < hist[k]; l ++) putchar('*'); putchar('\n'); } } void func1(int map[][20], int hist[], int i, int j) { if(i < 0 || 13 < i || j < 0 || 19 < j) return; hist[map[i][j] - 1] ++; map[i][j] *= -1; if(map[i + 1][j] > 0) func1(map, hist, i + 1, j); if(map[i][j - 1] > 0) func1(map, hist, i, j - 1); if(map[i - 1][j] > 0) func1(map, hist, i - 1, j); if(map[i][j + 1] > 0) func1(map, hist, i, j + 1); return; } void func0(int map[][20]) { int i, j; for(i = 0; i < 14; i ++){ for(j = 0; j < 20; j ++){ if(map[i][j] > 0){ int hist[6] = {0}; func1(map, hist, i, j); print(hist, i, j); } } } } int main(void) { int map[14][20] = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, }, {0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, }, {0, 0, 4, 5, 6, 0, 0, 1, 0, 2, 0, 0, 5, 6, 1, 0, 0, 0, 0, 0, }, {0, 0, 1, 2, 3, 0, 0, 3, 4, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, }, {0, 0, 0, 0, 0, 0, 0, 6, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, {0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, {0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, {0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, }, {0, 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, }, {0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 5, 6, 1, 0, 0, 0, 0, 0, 0, }, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, }, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }}; func0(map); return 0; }  

関連するQ&A