📄 lunkuo1.c
字号:
#include <stdio.h>
#include <math.h>
#define TRUE 1
#define FALSE 0
#define BUFSIZE 4096
int row=64,col=64;
int in_buffer[BUFSIZE];
int out_buffer[BUFSIZE];
int out[64][64];
int xq=-1,yq=-1;
static void dataIO(void);
static int search(int x,int y,int n)
{
int x1,y1;
switch(n)
{
case 0: x1=x+1;y1=y; break;
case 1: x1=x+1;y1=y-1; break;
case 2: x1=x;y1=y-1; break;
case 3: x1=x-1;y1=y-1; break;
case 4: x1=x-1;y1=y; break;
case 5: x1=x-1;y1=y+1; break;
case 6: x1=x;y1=y+1; break;
case 7: x1=x+1;y1=y+1; break;
}
if(x1<0||y1<0||x1>(row-1)||y1>(col-1))
return FALSE;
else
{if(out[x1][y1]==out[x][y])
{xq=x1;yq=y1;
return (x1*col+y1);
}
else return FALSE;
}
}
static int lunkuo(int *input,int *output)
{
int i,j,dir,k,dir1,x0,y0,next;
for(i=0;i<row;i++)
for(j=0;j<col;j++)
{
k=i*col+j;
out[i][j]=input[k]; //转化为矩阵的形式
}
for(i=0;i<BUFSIZE;i++) //找出第一个0元素
{
if(input[i]==0)
{
dir=7;x0=i/col;y0=i%col;output[i]=input[i];break;
}
}
dir1=(dir+7)%8;
for(i=0;i<8;i++)
{
next=search(x0,y0,(dir1+i)%8);
if(next)
{output[next]=0;dir=(dir1+i)%8;break;}
}
while(xq!=x0||yq!=y0)
{
if(dir%2==0) dir1=(dir+6)%8;
else dir1=(dir+7)%8;
for(i=0;i<8;i++)
{
next=search(xq,yq,(dir1+i)%8);
if(next)
{output[next]=0;dir=(dir1+i)%8;break;}
}
}
return TRUE;
}
void main()
{
int i;
int *input=&in_buffer[0];
int *output=&out_buffer[0];
for(i=0;i<BUFSIZE;i++)
out_buffer[i]=255;
while(1)
{
dataIO();
puts("processing\n");
lunkuo(input,output);
dataIO(); }
}
static void dataIO()
{
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -