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;
}
相关文章推荐
- 酒店管理系统
- 【每天学一点】C++基础04
- C语言的指针、链表的原理和各类操作
- C++文件操作
- c++结构体学习记录
- Geekban极客班 C++ STL与泛型编程 第一周作业
- c++继承与java继承的区别
- c语言数据问题
- {题解}[jzoj1298]牛棚(graze2.pas/c/cpp)
- C语言的指针、链表的原理和各类操作
- c++使用MYSQL教程
- C++ STL中迭代器介绍
- C++在STM8单片机上封装NRF24L01模块
- Effective C++--条款06:如何禁止编译器自动生成函数
- C++逗号运算符的作用
- 初尝C语言
- C语言指针和链表的体会
- c语言:简单飞机射击小游戏
- C++中 :: 的意思
- C/C++ 程序代码覆盖率统计工具Gcov