コード:
#include<iostream>
#include <string.h>
#define MAP_W 10
#define MAP_H 10
int map[MAP_H][MAP_W] = {
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
};
int work[MAP_H][MAP_W];
void print_work(void)
{
int x, y;
for(x=0;x<MAP_H;x++) {
for(y=0;y<MAP_W;y++) {
printf("%-2d", work[x][y]);
}
printf("\n");
}
printf("\n");
}
void Search4(int x, int y, int m);
void Search(int x, int y, int m)
{
/* TODO */
//m--;
m=m+map[x][y];
if(m>work[x][y]){
work[x][y] = m;
}
if(m>0){
Search4(x,y,m);
}
/* TODO */
}
void Search4(int x, int y, int m)
{
print_work();
Search(x, y-1, m); /* 上 */
Search(x, y+1, m); /* 下 */
Search(x-1, y, m); /* 左 */
Search(x+1, y, m); /* 右 */
}
int main(void)
{
int x = 6-1;
int y = 6-1;
int m = 3;
memcpy(work, map, sizeof(work));
Search4(x, y, m);
print_work();
fflush(stdin);//止める
getchar();
return 0;
}