专栏文章
题解:P14612 [2019 KAIST RUN Fall] 6789
P14612题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min0irxo
- 此快照首次捕获于
- 2025/12/01 18:34 3 个月前
- 此快照最后确认于
- 2025/12/01 18:34 3 个月前
题目大意
通过对题目中给定的 的矩阵中单某个数字进行翻转,有解输出翻转次数,无解则输出 。
思路
枚举 与 匹配。
情况:
- 两个 或 两个 或 两个 ,翻转其中一个。
- 两个 或 与 或 与 本身合法不用处理。
- 除去以上情况,剩余情况不合法则输出 。
注意:对中心特判只有 合法。
代码
CPP
#include<bits/stdc++.h>
using namespace std;
int n, m, nl, ml, ans;
int mp[510][510];
int main()
{
cin >> n >> m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
char a;
cin >> a;
mp[i][j] = a-'0';
}
}
if(n%2==1&&m%2==1)
{
if(mp[n/2+1][m/2+1] != 8)
{
cout << -1;
return 0;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(mp[i][j] == 6&&mp[n-i+1][m-j+1] == 9) continue;
if(mp[i][j] == 9&&mp[n-i+1][m-j+1] == 6) continue;
if(mp[i][j] == 7&&mp[n-i+1][m-j+1] == 10) continue;//10为倒7
if(mp[i][j] == 10&&mp[n-i+1][m-j+1] == 7) continue;
if(mp[i][j] != mp[n-i+1][m-j+1])
{
cout << "-1";
return 0;
}
if(mp[i][j] == 6&&mp[n-i+1][m-j+1] == 6)
{
ans++;
mp[n-i+1][m-j+1] = 9;
continue;
}
if(mp[i][j] == 9&&mp[n-i+1][m-j+1] == 9)
{
ans++;
mp[n-i+1][m-j+1] = 6;
continue;
}
if(mp[i][j] == 7&&mp[n-i+1][m-j+1] == 7)
{
ans++;
mp[n-i+1][m-j+1] = 10;
continue;
}
}
}
cout << ans;
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...