- ベストアンサー
メッシュの統計処理についての質問
- メッシュの統計処理についての質問です。プログラムのアルゴリズムを書く方法を教えてください。
- メッシュのブロックごとのヒストグラムを作成したいと考えています。アルゴリズムのフローを教えてください。
- メッシュのブロックごとにヒストグラムを作成するアルゴリズムの書き方について質問です。アドバイスをいただけないでしょうか?
- みんなの回答 (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; }
その他の回答 (1)
- yaemon_2006
- ベストアンサー率22% (50/220)
こんな感じ? #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; }
お礼
わざわざプログラムまで書いてもらって、 ありがとうございます。 無事に解決することができました。