|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在二微矩阵中 从0开始每次循环数字都+1 遇到x不能进入循环
如图 ....... ....... ....... .......
...xxx. ...xxx. ...xxx. ...xxx.
.xx...x .xx...x .xx2..x .xx234x
x....x. 第一次循环: x..1.x. 第二次循环: x.212x. 最终循环: x3212x6
..x0.x. ..x01x. ..x01x. 54x01x5
....... ....1.. ..212.. 4321234
xx.xxxx xx.xxxx xx.xxxx xx3xxxx
#include <stdio.h>
#include<string.h>
#define M 7
char map[M][M];
void inicarte(char arr[][M])
{
int i,j;
for(i=0;i<M;i++)
for(j=0;j<M;j++)
arr[i][j]='.';
}
int shitou(int x, int y)
{
if(x < M || y < M)
map[x][y]='x';
return 1;
if(x>M||y>M)
return 0;
}
int lig(int x)
{
return x;
}
int col(int x)
{
return x;
}
int duqu(int x,int y)
{
if((x>M || y>M)||map[x][y]=='.'||map[x][y]=='x')
return -1;
else
return 0;
}
int xieru(int x,int y,char date)
{
if(x>M || y>M )
return -1;
if(x < M && y < M && map[x][y]!='x')
map[x][y]=date;
return 0;
}
void print(char arr[][M])
{
int i,j;
for(i = 0; i < M; i++){
for(j = 0; j < M; j++){
printf("%c", arr[i][j]);}
printf("\n");}
printf("\n");
}
int main()
{
inicarte(map);
shitou(1,3);
shitou(1,4);
shitou(1,5);
shitou(2,1);
shitou(2,2);
shitou(2,6);
shitou(3,0);
shitou(3,5);
shitou(4,2);
shitou(4,5);
shitou(6,0);
shitou(6,1);
shitou(6,3);
shitou(6,4);
shitou(6,5);
shitou(6,6);
int x=lig(4);
int y=col(3);
xieru(x,y,48);
int xunhuan =4;
int i;
for (i=0;i<xuhuan;i++){
if (duqu(x,y) !=-1)
xieru(x-i,y,48+i);
xieru(x+i,y,48+i);
xieru(x,y-i,48+i);
xieru(x,y+i,48+i);
print(map);}
return 0;
}
………………你这样写代码,会让人不想看
应该是你要的东西,用递归去实现比较适合,目前来说先打好基础~ #include <stdio.h>
#define M 7
int map[M][M];
void initMap(int arr[][M],int x, int y)
{
for(int i = 0; i < M; i++)
for(int j = 0; j < M; j++)
arr[i][j] = '.';
arr[y][x] = 0;
}
void placeRock(int x, int y)
{
if(x < M && y < M)
map[y][x] = 'x';
}
void fillingMap(int arr[][M],int x, int y)
{
int move_x[4] = {-1, 0, 1, 0};
int move_y[4] = {0, -1, 0, 1};
int x1,y1;
for(int i = 0; i < 4; i++)
{
x1 = x + move_x[i];
y1 = y + move_y[i];
if(x1 >= 0 && x1 < M && y1 >= 0 && y1 < M)
{
if(arr[y1][x1] == 'x')
continue;
if(arr[y1][x1] < arr[y][x])
continue;
arr[y1][x1] = arr[y][x] + 1;
fillingMap(arr,x1,y1);
}
}
}
void fillMap(int arr[][M])
{
int x, y, flag = 0;
for(y = 0; y < M; y++)
{
for(x = 0; x < M; x++)
{
if(arr[y][x] == 0)
{
flag = 1;
break;
}
}
if(flag) break;
}
fillingMap(map,x,y);
}
void print(int arr[][M])
{
for(int i = 0; i < M; i++)
{
for(int j = 0; j < M; j++)
{
if(arr[i][j] == 'x' || arr[i][j] == '.')
printf("%3c ", arr[i][j]);
else
printf("%3d ", arr[i][j]);
}
printf("\n");
}
printf("\n");
}
int main()
{
initMap(map,3,4);
placeRock(0,3); placeRock(0,6); placeRock(1,6);
placeRock(2,1); placeRock(2,2); placeRock(2,4);
placeRock(3,1); placeRock(3,6); placeRock(4,1);
placeRock(4,6); placeRock(5,1); placeRock(5,3);
placeRock(5,4); placeRock(5,6); placeRock(6,2);
placeRock(6,6);
print(map);
fillMap(map);
print(map);
return 0;
}
|
|