• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:行・列に隣り合う配列の要素を調べたい)

行・列に隣り合う配列の要素を調べたい

このQ&Aのポイント
  • C言語でパズル的なものを作成していますが、行と列に隣り合う配列の要素を調べる方法を知りたいです。
  • 配列の要素を調べるため、指定した位置から上下左右に探索して隣り合う要素があればその位置を抜き出したいです。
  • 効率的なアルゴリズムを教えてください。

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

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

#include <stdio.h> #define FX 7 #define FY 7 #define SX 3 #define SY 3 void explore(char result[][FX], char list[][FX], int x, int y) { if(x < 0 || FX <= x) return; if(y < 0 || FY <= y) return; if(!list[y][x] || result[y][x]) return; result[y][x] = 1; explore(result, list, x, y - 1); explore(result, list, x + 1, y); explore(result, list, x, y + 1); explore(result, list, x - 1, y); return; } void print(char result[][FX], char list[][FX], int x, int y) { const char *s = "01x"; int i, j; for(i = 0; i < FY; ++ i){ for(j = 0; j < FX; ++ j){ if(i == y && j == x) putchar('s'); else putchar(s[list[i][j] + result[i][j]]); } putchar('\n'); } putchar('\n'); } int main(void) { char list[FY][FX] = {{1,0,0,0,1,0,0}, {0,1,0,0,1,0,0}, {0,0,1,0,1,1,1}, {1,1,1,1,1,0,0}, {0,0,0,1,1,0,0}, {0,0,0,1,0,1,1}, {0,0,0,1,0,1,1}}; char result[FY][FX] = {0}; print(result, list, SX, SY); explore(result, list, SX, SY); print(result, list, SX, SY); return 0; }

cikora
質問者

お礼

思い通りの結果が得られました! 本当に感謝します、ありがとうございます。

関連するQ&A