📄 lunkuo.c
字号:
#include <stdio.h>
#include <math.h>
#define TRUE 1
#define FALSE 0
#define BUFSIZE 4096
int in_buffer[BUFSIZE];
int out_buffer[BUFSIZE];
int row=64,col=64;
static void dataIO(void);
static int search(int *input,int k,int n)
{
int t;
switch(n)
{case 0: t=k+1;break;
case 1: t=k+1-col;break;
case 2: t=k-col;break;
case 3: t=k-1-col;break;
case 4: t=k-1;break;
case 5: t=k-1+col;break;
case 6: t=k+col;break;
case 7: t=k+col+1;break;
}
if(t<0)
return t;
}
static int lunkuo(int *input,int *output)
{
int i,j,dir1,dir,m=0,next,n=-1;
for(i=0;i<BUFSIZE;i++)
if(i%col==0||i/col==0||i%col==(row-1)||i/col==(row-1))
{output[i]=input[i];}
for(i=0;i<BUFSIZE;i++) //找到第1个非0点
{ if(i%col==0||i/col==0||i%col==(row-1)||i/col==(row-1))
continue;
else
{if(input[i]!=0)
{m=i;dir=7;output[m]=input[i];break;} //m=0
}
}
dir1=(dir+7)%8; printf("m is %d\n",m);
for(i=0;i<8;i++)
{
next=search(input,m,(dir1+i)%8);
if(next)
{dir=(dir1+i)%8;n=next;output[n]=input[next];break;}
}
/*while(n!=m)
{
if(dir%2==0)
dir1=(dir+6)%8;
else dir1=(dir+7)%8;
for(i=0;i<8;i++)
{
next=search(input,n,(dir1+i)%8);
if(next)
{
dir=(dir1+i)%8;n=next;output[n]=input[next];break;
}
}
}*/
return TRUE;
}
void main()
{
int *input=&in_buffer[0];
int *output=&out_buffer[0];
while(TRUE)
{dataIO();
puts("processing\n");
lunkuo(input,output);
dataIO();
}
}
static void dataIO()
{
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -