题目描述:

对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一,
现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。

输入:
输出:

如果可以变换得到输出"Yes",否则"No"。
存在多组数据,每组数据第一行一个正整数n(n<=10),表示一个n*n的矩阵,然后紧跟n行,每行n个整数。当n为0时,测试结束。

样例输入:
3
1 10 9
1 1 2
1 0 1
3
0 1 0
0 1 2
1 0 1
0
样例输出:
Yes
No
 #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
int matrix[][];
int dir[][] = {{,},{,-},{,},{-,}}; int main(int argc, char const *argv[])
{
int n;
while(scanf("%d",&n) != EOF && n != ) {
int x = , y = ;
for(int i = ; i < n; i++) {
for(int j = ; j < n; j++) {
scanf("%d",&matrix[i][j]);
if((i + j) & ) {
x = x + matrix[i][j];
}
else {
y = y + matrix[i][j];
}
}
}
if(x != y) {
puts("No");
continue;
}
bool isOk = true;
for(int i = ; i < n && isOk; i++) {
for(int j = ; j < n && isOk; j++) {
int sum = ;
for(int p = ; p < ; p++) {
int tmpx = i + dir[p][];
int tmpy = j + dir[p][];
if(tmpx >= && tmpx < n && tmpy >= && tmpy < n) {
sum = sum + matrix[tmpx][tmpy];
}
}
if(matrix[i][j] > sum) {
isOk = false;
break;
}
}
}
if(isOk) {
puts("Yes");
}
else {
puts("No");
} }
return ;
}

这道题关键是找到判断的充要条件,这里的充要条件有两个(摘自http://www.cnblogs.com/liangrx06/p/5083814.html),

(1)X=sum(A[i][j]其中i+j是奇数,Y=sum(A[i][j])其中i+j是偶数,则有X=Y
(2)任意一个元素不大于周围四个元素的和

最新文章

  1. CSS选择器的权重与优先规则?
  2. js单选和复选框
  3. kali 密码攻击
  4. Apache shiro之身份验证(登陆)流程
  5. html+css学习笔记 2[标签]
  6. node.js 浏览器中输出 “hello world”
  7. ListView的item中有button和checkbox,listview的点击事件无效
  8. 转HTMLTestRunner 生成测试报告
  9. 《火球——UML大战需求分析》(第1章 大话UML)——1.4 如何学好UML?
  10. javascript之尺寸,位置,溢出
  11. android gridview画分割线
  12. v9.5.2上传缩略图/附件提示“undefined”
  13. app.config 配置多项 配置集合 自定义配置(3)
  14. pptpd免radius限速、限连接+自由定制功能脚本
  15. elk每日清除30天索引脚本
  16. 知识点:Mysql 索引优化实战(3)
  17. leetcode(js)算法605之种花问题
  18. python装饰器的详细解析
  19. TZOJ 3198: 区间和
  20. EVA索赔系统JAVA拦截例外站点

热门文章

  1. “Debug Assertion” Runtime Error on VS2008 VS2010 winhand.cpp
  2. 内存泄露--contentView缓存使用与ListView优化
  3. [jQuery] Cannot read property ‘msie’ of undefined错误的解决方法 --转
  4. 00_HTTP协议介绍
  5. Android计算器布局
  6. 计算机图形学:贝塞尔曲线(Bezier Curve)
  7. Mac如何让调整窗口大小更简单
  8. CPP-基础:TCHAR
  9. LeetCode || 大杂烩w
  10. easyui树节点拖拽排序的存储过程