2023年河南工程学院新生周赛(一) B:天使重构

"地球这样的行星,是产生不了重元素的,你身体里的铁,来自璀璨的超新星爆炸"
"血液里的锌,源自两次中子星对撞后喷射向宇宙的尘埃"
"那微量的铜,更是需要见证一颗白矮星的死亡,即使是最微不足道的钴,也源自几十亿光年外的星云"
"某种意义上讲,人类对星空怀有好奇,是正常的。"
"渴望见证星河大海的极限,因为我们本就是星辰之子 。"
 



面对近在咫尺的理之律者核心,布洛妮娅需要完成前一任理之律者留下的考验,考验如下:
给你一个有 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;
}

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值