九度oj 题目1250:矩阵变换
- 题目描述:
-
对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一,
现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- 输入:
- 输出:
-
如果可以变换得到输出"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)任意一个元素不大于周围四个元素的和
九度oj 题目1250:矩阵变换的更多相关文章
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 九度oj 题目1007:奥运排序问题
九度oj 题目1007:奥运排序问题 恢复 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ题目1105:字符串的反码
tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...
- 九度oj题目1009:二叉搜索树
题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...
- 九度oj题目1002:Grading
//不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...
- 九度OJ题目1003:A+B
while(cin>>str1>>str2)就行了,多简单,不得不吐槽,九度的OJ真奇葩 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号", ...
随机推荐
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
内存分配方式 内存分配方式有三种: [1] 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量, static 变量. [2] 在栈上创建.在执行函 ...
- SWTError: No more handles [gtk_init_check() failed] running platform tests (on Linux)
http://www.lemmster.de/2013-12-19-swterror-no-more-handles-gtk_init_check-failed-running-platform-te ...
- vijos 1034 家族(水题日常)
描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是亲戚 ...
- App Store上的开源应用汇总
以下是互联网上主要的开源iOS应用的列表,在学习的时候,多看看完成的功能代码可以给我们带来很多经验,但是除了Apple官方提供的Sample Code之外,我们很难找到优质的开源项目代码,所以我搜集了 ...
- LVM逻辑分区的优缺点与步骤
一.LVM简介 1. 什么是LVM? LVM是 Logical Volume Manager(逻辑卷管理)的简写 2. 为什么使用LVM? LVM通常用于装备大量磁盘的系统,但它同样适于仅有一.两块硬 ...
- 安装PIL报错解析
开始安装PIL PIL只支持到python2.7,我安装的是python3.6版本,所以 不支持,报错 需要下载支持自己版本的包,下载地址https://www.lfd.uci.edu/~gohlk ...
- webpack之postcss集成
项目 为了 兼容各个浏览器,需要加各种 c3前缀,如果手动的加肯定 相对比较麻烦,但是现在有webpack,gulp之类的 工具可以自动给我们加上,可以说效率上加速不少.如果 配置中 做个happyp ...
- JAVA遍历map元素
第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...
- str.format输出乱码
如该示例,str.Format(L"相似度:%f\t视频名称:%s\t起始位置:%d\r\n",tmp[0].dblSimilarity,tmp[0].szFileName,tmp ...
- C++后台知识点总结(一)
C++基础部分: 1.数组和指针的区别 (1)数组本身体现出来的就是一个 指针常量的 “特性”,即不能对数组的首地址进行修改,内存上的地址就已经是确定了的.而指针本身是一个变量,他指向了一个地址,这个 ...