"地球这样的行星,是产生不了重元素的,你身体里的铁,来自璀璨的超新星爆炸"
"血液里的锌,源自两次中子星对撞后喷射向宇宙的尘埃"
"那微量的铜,更是需要见证一颗白矮星的死亡,即使是最微不足道的钴,也源自几十亿光年外的星云"
"某种意义上讲,人类对星空怀有好奇,是正常的。"
"渴望见证星河大海的极限,因为我们本就是星辰之子 。"
面对近在咫尺的理之律者核心,布洛妮娅需要完成前一任理之律者留下的考验,考验如下:
给你一个有 n行和 n列的正方形网格。每个单元格包含 0或1。
在操作中,您可以选择网格中的一个单元格并翻转它(从 0→1 或 1→0)。找出最少需要多少次操作才能得到一个在旋转0°、90°、180°和270°时保持不变的正方形。
下图显示了一个网格的所有旋转示例。
输入
第一行包含一个整数n,表示网格大小
然后是n行,每行有n个字符(0或1),表示单元格中的数字
输出
对每个测试用例输出一个整数—使正方形在旋转 0°、90°、180°和270° 后看起来相同所需的最少操作数。
样例输入 复制
3
010
110
010
样例输出 复制
1
代码如下:
#include<iostream>
using namespace std;
char a[110][110];
int main()
{
int i,j,n,ans=0;
cin>>n;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(i=1;i<=n/2;i++)
{
int j=0;
int x1=i,y1=i,x2=i,y2=n+1-i,x3=n+1-i,y3=i,x4=n+1-i,y4=n+1-i;
while((i+j)<(n+1-i))
{
int sum=a[x1][y1+j]+a[x2+j][y2]+a[x3-j][y3]+a[x4][y4-j]-192;//192=4*'0';
ans+=min(sum,4-sum);
j++;
}
}
cout<<ans;
return 0;
}