69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
int a[7][7]={{0,0,1,2,3,0,0},
{0,0,4,5,6,0,0},
{7,8,9,10,11,12,13},
{14,15,16,17,18,19,20},
{21,22,23,24,25,26,27},
{0,0,28,29,30,0,0},
{0,0,31,32,33,0,0}};
int b[35][4][2],to[35];
int main()
{
int i,j,k,t;
memset(to,0,sizeof(to));
for(i=0;i <7;i++)
{
for(j=0;j <7;j++)
{
if(a[i][j]==0)
{
continue;
}
k=a[i][j];
if(i <=4&&a[i+2][j])
{
b[k][to[k]][0]=a[i+2][j];
b[k][to[k]++][1]=a[i+1][j];
}
if(j <=4&&a[i][j+2])
{
b[k][to[k]][0]=a[i][j+2];
b[k][to[k]++][1]=a[i][j+1];
}
if(j>=2&&a[i][j-2])
{
b[k][to[k]][0]=a[i][j-2];
b[k][to[k]++][1]=a[i][j-1];
}
if(i>=2&&a[i-2][j])
{
b[k][to[k]][0]=a[i-2][j];
b[k][to[k]++][1]=a[i-1][j];
}
}
}
to[1]=to[3]=2; to[2]=1;
bool vis[36];
printf("HI Q OUTPUT\n");
scanf("%d",&t);
while(t--)
{
memset(vis,0,sizeof(vis));
while(scanf("%d",&k),k)
{
vis[k]=1;
}
while(1)
{
for(i=33;i>=1;i--)
{
if(vis[i]==0)
{
for(j=0;j <to[i];j++)
{
if(vis[b[i][j][0]]==1&&vis[b[i][j][1]]==1)
{
break;
}
if(j <to[i])
{
break;
}
}
if(i==0)
{
break;
}
vis[b[i][j][0]] = vis[b[i][j][1]]=0;
vis[i] = 1;
}
k = 0;
for(i=1;i <=33;i++)
{
if(vis[i])
{
k+=i;
}
printf("%d\n",k);
}
printf("END OF OUTPUT\n");
return 0;
}