您的位置:首页 > 编程语言 > C语言/C++

CSP考试 2016年04月第2题 俄罗斯方块 C语言实现

2016-06-13 20:18 543 查看




#include <stdio.h>
#include <string.h>
int main()
{
int NUM1=15;
int NUM2=10;
int a[NUM1][NUM2];
memset(a,0,sizeof(a));
int i;
int j;
for(i=0;i<NUM1;i++)
{
for(j=0;j<NUM2;j++)
{
scanf("%d",&a[i][j]);
}
}
int b[4][4];
memset(b,0,sizeof(b));
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&b[i][j]);
}
}
int xps;
scanf("%d",&xps);
xps=xps-1;
int k;
int flag=0;
for(k=0;k<15;k++)
{
//for(i=0+k;i<4+k;i++)
for(i=3+k;i>=0+k;i--)
{
for(j=0+xps;j<4+xps;j++)
{
if((b[i-k][j-xps]==1)&&(a[i][j]==1))
{
int m,n;
for(m=0+k-1;m<4+k-1;m++)
{
for(n=0+xps;n<4+xps;n++)
{
if(a[m]
==0)
{
a[m]
=b[m-k+1][n-xps];
}
}
}
flag=1;
//printf("hi\n");
break;
}else if((b[i-k][j-xps]==1)&&(i==14))
{
int m,n;
for(m=0+k;m<4+k;m++)
{
for(n=0+xps;n<4+xps;n++)
{
if(a[m]
==0)
{
a[m]
=b[m-k][n-xps];
}
}
}
flag=1;
//printf("hello\n");
break;
}
}
if(flag==1)
{
break;
}
}
if(flag==1)
{
break;
}
}

for(i=0;i<NUM1;i++)
{
for(j=0;j<NUM2;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
//printf("\n%d\n",flag);
/*
for(i=0;i<4;i++)
{
printf("\n");
for(j=0;j<4;j++)
{
printf("%d ",b[i][j]);
}
}
printf("\n%d",xps);*/
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: