旋转
来源:互联网 发布:新淘宝口令怎么设置 编辑:程序博客网 时间:2024/04/29 01:50
【题目描述】
考虑下图 1 的一个由 5*5 的正方形(每个单元格是一个小正方形),其中有 7 个单元格被填充成了黑色,而其余没有填充颜色。
将这个正方形顺时针旋转 90 度,然后叠加在原始图 1 之上得到新正方形图 2(含 13 个黑色格子):
原始图 1 在第 1 次旋转的基础上再顺时针旋转 90 度,叠加到图 2 之上,得到图 3 所示的正方形(含有 19 个黑色格子):
原始图 1 在第 2 次旋转的基础上再顺时针旋转 90 度,叠加到图 3 之上,得到图 4 所示的正方形(含有 25 个黑色格子):
【输入格式】
输入文件仅包含N+1行。
第一行一个整数N(1≤N≤25)。
接下来N行,每行N个“0”或“1”构成的序列,表示正方形的初始状态。其中“0”表示此处的小正方形式没有填充颜色的,“1”表示此处正方形已经是黑色填充了。
【输出格式】
输出文件共四行。每行包含一个整数,分别表示每次叠加后N*N正方形中黑色格子的数量(其中第一行为原始图中黑色格子的数量)。
【样例输入】
5
10100
10001
01100
01000
00000
【样例输出】
7
13
19
25
【分析】
数据范围令人皆大欢喜。
模拟,几乎没什么要注意的细节。
#include<iostream>#include<string>using namespace std; int a[30][30],b[30][30],c[30][30]; int n;void sum(){ int s=0; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if (a[i][j]==1) s++; cout<<s<<endl;}int main(){ cin>>n; char ch; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++){ cin>>ch; if (ch=='1') a[i][j]=1; else a[i][j]=0; } for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) b[i][j]=a[i][j]; sum(); for (int t=1;t<4;t++){ for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) c[i][j]=b[j][n-i+1]; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if (c[i][j]==1) a[i][j]=1; sum(); for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) b[i][j]=c[i][j]; }}
3 0
- 旋转
- 旋转
- 旋转
- 旋转
- 旋转
- 旋转
- 旋转向量-旋转矩阵
- 旋转矩阵,旋转影像
- 图形旋转
- 旋转排列
- 旋转位图
- 数组旋转
- 图形旋转
- 旋转矩阵
- 旋转屏幕
- 图片旋转
- 图像旋转
- 图片旋转
- View触摸事件分发
- 快速排序
- failed to list objects pool_iterate returned r=-2
- Fatal error compiling: tools.jar not found: C:\Program Files\Java\jre-8u111\..\lib\tools.jar
- labview浮点数转化为科学计数法字符串显示
- 旋转
- 启用 Open vSwitch - 每天5分钟玩转 OpenStack(127)
- javascript判断对象是否为domElement
- django建立自己的工程
- SlidingMenu+viewpager+fragment实例
- 二进制小数
- 3.3.2
- thinkphp 重定向 url pathinfo 这里有个坑
- PHP内存泄漏问题解析