08:矩阵加法

  • 查看
  • 提交
  • 统计
  • 提问

究竟时范围: 
1000ms

内存限制: 
65536kB

描述
输入两只n行m列的矩阵A和B,输出它们的和A+B。

输入
先是执包含两单整数n和m,表示矩阵的行数和列数。1 <= n <= 100,1
<= m <= 100。
连着下n行,每行m个整数,表示矩阵A的因素。
联网下n行,每行m个整数,表示矩阵B的元素。
隔壁两个整数之间为此么空格隔开,每个元素都在1~1000之间。

输出
n行,每行m个整数,表示矩阵加法的结果。相邻两个整数之间用么空格隔开。

样例输入
3 3
1 2 3
1 2 3
1 2 3
1 2 3
4 5 6
7 8 9

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[10001][10001];
int b[10001][10001];
int ans[10001][10001];
int now;
int tot;
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>b[i][j];
            ans[i][j]=a[i][j]+b[i][j];
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cout<<ans[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

 

上下滚屏

  统计 1

  语法:

动作命令 动作说明
CTRL+E  向下一行。光标一直往上走,直到顶到屏幕第一行,滚动的是内容
CTRL+Y  向上一行.光标一直往下走,直到顶到屏幕最后一行,滚动的是内容
Ctrl+D   向下半屏。光标在屏幕的相对位置不变,滚动的是内容
Ctrl+U   向上半屏。光标在屏幕的相对位置不变,滚动的是内容
CTRL+F   向下一屏。光标一直在第一行,滚动的是内容。
CTRL+B  向上一屏.光标一直在最后一行,滚动的是内容。

 

动作命令

  用来选定要操作的公文的限制。

  基本有的动作命令前还好加上量词{count}表示又,就未以逐个做证。

  详情可查看 :h motion,:h usr_03.txt,:h xx(动作命令)。

  实际行与屏幕行之分。

  与博文本编辑器不同,Vim 会区分实际行与屏幕行。当‘wrap’
设置给启用时
(缺省启用),每个超出窗口宽度的文本行都见面给回绕显示,以保证没有公文显示不发生
来。这样一来,文件被之一条龙也许会叫出示也屏幕上的好多履行。要想清楚实际行与屏幕行之间的例外,最简易的主意是启用‘number’
设置。

  统计 2

  理解实际行与屏幕行间的反差大关键,因为 Vim
提供了不同的动作命令来操作 这两者。j 和k
命令会依据实际履行向下和提高走,而gj 和gk 则是准屏幕行向下
及升华走。即只要出加g就是意味着的凡屏幕行,没有加g就象征的是实际行。

合规则 

一声令下一般都是成对出现的,所以可以协同起来记,这样记忆场景量能少一半。例如:

  • 单词移动,从错误望右侧和从右侧为左都起照应的动作命令。从左到右:w|W,e|E。从右侧为左:b|b,ge|gE…..
  • 屏幕滚动, 向前及为后。Ctrl+F|Ctrl+B,
    Ctrl+U|Ctrl+D
  • 大小写。gu |gU

命令是象形。理解这个象形,有助于记忆。例如:

  • 符本身就是表示向前还是向阳后底定义。),},],>
  • 小写的时光表示 word,大写的意味WORD。 单词移动:w(word),W(WORD)
  • 遵循以可行性前加g,表示物理行和屏幕行。
    k(移动至下一个物理行),gk(移动及下一个屏幕行)
  • 大写代表至行尾。C相当给c$,D相当给d$。
  • 高低写表示方向的。f{char} 从左望右侧查找,F{char}从右侧为左查找。
  • 一个操作符命令被连续调整用半次等时,它会作用为目前施行。比如:dd:删除时实施,yy:复制当前实施,>>:缩进当前实践……

方法

  类似于java的编程语言的一个计。

  详情可查看:h various-motions里之]m。

目的

左右normal模式下常用操作的语法和概念,这些操作对应的使用场景和实用技巧。

经过normal模式举一反三掌握cmd-line和visual的常用文本操作。

复制,粘贴

  定义:复制文本及寄存器。

  语法:

操作符 实现功能
y{motion} 复制动作命令代表的文本到寄存器
yy 复制当前行到寄存器
Y 复制当前行到寄存器,相当于yy。能不按shift键我都不愿意用shift。所以一般直接用yy  

  定义:把复制的文书粘贴出来。

  语法:

操作符 实现功能
p 把复制的文本粘贴到光标之后。如果复制的是行,则放在当前行的下面,并且光标停留在复制文本的第一行位置
P(Shift+p) 把复制的文本粘贴到光标之前。如果复制的是行,则放在当前行的上面,并且光标停留在复制文本的下一行位置
gp 把复制的文本粘贴到光标之后。如果复制的是行,则放在当前行的下面,并且光标停留在复制文本的第一行位置
gP(Shift+p) 把复制的文本粘贴到光标之前。如果复制的是行,则放在当前行的上面,并且光标停留在复制文本的下一行位置

   注意事项 :

  • 产生加g的操作符,如果是行复制需要留意。有加g最终光标停留于复制的文本的生一行,没加g最后光标停留于复制的文件第一履行。

简介

  文本操作的美妙状态为:一个操作符+一个动作命令。

  normal、visual、cmd-line都备操作文本的基本功能。

  • normal    操作符+动作命令。
  • visual    
     动作命令+操作符。
  • cmd-line    
    匹配范围+操作符。

  这三只在文书的根基操作时落实的效益是平的。主要围绕着normal来讲,其他的类比即可。

  学习新的动作命令和操作符,就像是于求学Vim
的词汇一样。如果控制了就同大概的语法规则,通过做,在词汇量增长时,就能够表达重多之想法。所以要明确每个操作的实际对应之概念,因为这些概念在整个vim都是通用的。

变量

  统计 3

  语法:

动作命令 动作说明
% 找到匹配的([{}])
[( 找到不匹配的(
[{ 找到上一个不匹配的{
]m 跳到下一个方法  
]符号( #,*,/) 跳到下一个符号的位置

 

起当前光标到下一个光标

倘必要之时段下次数

假设我们想把文字“I have a couple of questions”改为“I have some more questions”

   统计 4

  在此场景中,使用. 命令的含义不特别,我们好去一个单词,然后还用.
命令去另一个,但就我们尚得切换到插入模式(例如,使用i
或cw)。对本人来说这样做老不顺手,我倒再也乐于为此次数。
  使用次数之其它一个便宜是:它保留了一个到底、连贯的取消历史记录。完成这次修改后,我们循一下u
键就可以取消所有修改。

文件选择

  一旦实施此动作命令,就相当给实践是选项的区域。

  a和i的区别。
i:表示的是inner,指的凡区域外的公文;a:表示的是a,指的凡一个完好无缺的区域文本内容。

  统计 5 

  统计 6

  后面就是只是写区域名称,不一一写出来了,都是变成对出现的。

  语法:

动作命令 代表的文本区域
s 句子
p 段落
]或[ 一个"]"块 
)或( 一个"("块
}或{ 一个"{"块
b 相当于一个"("块
B 相当于一个"{"块
>或< 一个"<"块
t 一个tag blocks,相当于<aa></aa>
" 一个"""块
一个"’"块

  详情可查看:h
object-select。

行查找

  统计 7

  语法:

动作命令 动作说明
F{char} 从右向左查找字符。光标停留在找到的字符上面。
f{char} 从左向右查找字符。光标停留在找到的字符上面。
T{char} 从左向右查找字符。光标停留在找到的字符后一个字符。
t{char} 从左向右查找字符。光标停留在找到的字符前一个字符。
; 重复上一次的行查找(f,F,t,T)
, 回到上一次的行查找的位置

注意事项:

  • 酷写字母是自右侧为左,小写字母是自右侧为右侧
  • f系统是光标停留在查找到的字符上面,t系列是光标停留于查阅找到的字符临近一个字符。

行定位

  统计 8

  语法:

动作命令 动作说明
0 移动到实际行的行首
g0 移动到屏幕行的行首
^ 移动到实际行的第一个非空白字符
g^ 移动到屏幕行的第一个非空白字符
$ 移动到实际行的行尾
g$ 移动到屏幕行的行尾
gm 移动到屏幕行的中间
+ 移动到下一行行首第一个非空白字符
移动到上一行行首一个非空白字符

注意事项:

  • 0和^的区分在于非空白字符。
  • g用于区别实际行和屏幕行

结构

  有些许栽情况:

  1、以一个标记开始,又坐这符号结束之。比如(),[],{},<>,””,”。

  2、以标签开始,又因这标签了之。比如 <aaa> </aaa>

  这个重大是文件选择的时段用底可比多。一般会区分a和i(inner)。a表示所有结构,i表示是组织里的文件。

  详情可查看:h object-select ,:h tag-blocks。

跳越

  一个跳越,指定的凡使用以下命令: “‘”, “`”, “G”, “/”, “?”, “n”,”N”,
“%”, “(“, “)”, “[[“, “]]”, “{“, “}”, “:s”, “:tag”, “L”, “M”, “H”
等命令

  统计 9

  语法:

动作命令 动作说明
Ctrl+o 跳到上一个光标位置
Ctrl+i 跳到下一个光标位置
ng, 向之前n次修改跳越
ng; 向之后n次修改跨越

  注意事项:

  • 相当cmd-line下的:jumps,查看所有跳越。
  • 配合cmd-line下的:changes,查看有修改的跳越。

  详情可查:h jumps ,:h changes 。

语法:

  定义宏:

1、q{name}

2、录制的授命

3、q

  使用宏:

    ${count}@{name}

//要生成一个一百行的序列号
//先输入文本
1、
//开始录制
//qayyp(Ctrl+A)q
//执行宏
//98@a

 删除周边,修改中

假设,我们想删除下句中的单词“excellent”,此时可以用daw 命令:

  统计 10

  这条命令会删除此单词,外加一个空格,因此结果会死干净。如果我们之所以底凡diw的话,那抹了后哪怕见面起半点个连在一起的空格,这也许并无是咱纪念要之。

现在假设我们是想把此单词改成另外一个单词,这次可以用ciw 命令:

  统计 11

  ciw
命令就去该单词,而无删其左右的空白字符,随后她会跻身插入模式,这恰恰是我们怀念如果的力量。如果用之是caw
的话语,那最后两独单词就会连在一起,变成“mostadjectives”。虽然当时特别容易修正,但要是相同开始就是能免此问题,那怎么不是再次好么。

  一般的话,d{motion} 命令和aw、as 和ap
配合起来使用比较好,而c{motion}命令和iw
及类似的文件对象同从而功能会再度好。

算术运算

{count}ctrl+a  加法

{count}ctrl+x  减法

每当开一些数字处理和校正时有用。例如

//要把第一个0px改为180px
.blog { background-position: 0px 0px }
//此时如果常规操作,f0s180<ESC>
//更快的操作就是使用算术运算,直接180Ctrl+A

能还,就别用次数

  在拍卖某些特定工作时,使用次数可使按键次数转移得最少,不过我们并无是无得如此不行。我们用认真考虑次数及更各自的利弊。

假设在缓冲区里有如下文字:
Delete more than one word
我们想把这段文字改为“Delete one word”,也就是说,要像这段文字里所讲的那样删除两个单词。

   我们的3 栽选择d2w、2dw 或者dw. 都是3 次按键,不过哪一样种植最好呢? 

  根据我们的讨论,d2w 和2dw
是如出一辙的,在实践完两者中之任一个后,我们可按u
键撤销,这样简单个叫删除的单词又见面回来。或者,我们无是故撤销,而是用.命令还执行其,这即会去后的星星点点个单词。
  对于dw. 的情形,按u 或.
的结果会生出微小之异样。这里的修改是dw,即除去一个单词。因此,如果想重操旧业就有限个被删的单词,必须撤回两浅,按uu(或者,如果您愿意,也足以遵循2u)。按.
则单纯去后的一个单词,而无是少单。
  现在使我们原本是想念去3 只单词,而未是2
独。由于判断出了接触错,我们实行了d2w
而不是d3w,那接下怎么开?我们不可知采取.
命令,因为那会总共去4个单词。因此,我们恐怕先撤后修正次数(ud3w),或是继续去下一个单词(dw)。
  现在考虑任何一样种方案,如果我们当率先处在地方用底是dw.
命令,那么我们如果再多更一次.
令就推行了。因为我们最初的改单独是简简单单的dw,因此u 命令和.
命令还有更细之粒度,每次就打算为一个单词。

  现在一旦我们怀念抹7 独单词,我们好运作d7w,或是dw……(即dw
后面和6 次.
命令)。计算一下按键的次数,哪个命令不止是老大明确的。不过你真正地确信自己一再针对了次数为?计算次数很是嫌,因此自情愿按6
次. 命令,也无甘于就也削减按键的次数,
  而浪费同样的日子去统计次数。如果我差不多按了扳平糟糕.
命令怎么惩罚?没关系,只要按照平蹩脚u 键就得回退回来。

段落

  以空行区分开段落。

  详情可翻:h paragraph。

单词移动

 统计 12

  语法:

动作命令 动作说明
w 从左向右,移动到下一个单词词首
W 从左向右,移动到下一个大单词词首。
b 从右向左,如果光标不是在词首。则移动到本单词词首。如果在词首移动到下一个单词词首。
B 从右向左,如果光标不是在词首。则移动到本单词词首。如果在词首移动到下一个大单词词首。
e 从左向右,如果光标不是在词尾,则移动到本单词词尾。如果在词尾移动到下一个单词词尾
E 从左向右,如果光标不是在词尾,则移动到本单词词尾。如果在词尾移动到下一个大单词词尾
ge 从右向左,移动到下一个单词词尾
gE 从右向左,移动到下一个大单词词尾

注意事项

  •  大写代表WORD,小写代表word

文件移动

  语法:

动作命令 动作说明
) 移动下一个句子句首。
( 移动上一个句子句首。
} 移动下一个段落段首前的空行上
{ 移动上一个段落段首前的空行上
]] 移动到下一个以“{"为第一个字符的行首。如果结合操作符,则停留下一个"{"的上一行。
[[ 移动到上一个以“{"为第一个字符的行首。如果结合操作符,则停留上一个"{"的那一行
][ 移动到下一个以“}"为第一个字符行首。如果结合操作符,则停留下一个"}"上一行
[] 移动到上一个以“}"为第一个字符行首。如果结合操作符,则停留上一个"}"那一行

 

高低写切换

  定义:指定的文件大小写切换。

  语法:

操作符 实现功能
~ 切换光标下的字符大小写
~~ 切换当前行的大小写
g~{motion} 切换动作命令代表的文本的大小写  
gu{motion} 把动作命令代表的文本变为小写
gugu 当前行变为小写
gU{motiong} 把动作命令代表的文本变为大写
gUgU 当前行变为大写

 

单词

  由非空白字符组成的贯通的集合,由空白字符分隔。字符不包要字(iskeyword)。

  详情可查看:h word ,:h iskeyword。

屏幕不动就标动

  说明:屏幕里的内容无滚动,光标移动。

  统计 13

  语法:

动作命令 动作说明
H 光标定位到当前屏幕最上行
M 光标定位到当前屏幕的中间行
L 光标定位到当前屏幕的最下行

 

据悉光标滚一屏

  说明:光标在原来的物理行位置不动,屏幕里之情节滚动最酷价值一屏。

  统计 14

  语法:

动作命令 动作说明
zt 光标置于屏幕第一行,光标的列还是和移动之前一致。
z+ 光标置于屏幕第一行。相当于z<CR(回车键)>,光标在于行首
zz 光标置于屏幕中文,光标的列还是和移动之前一致。
z. 光标置于屏幕中文,光标在于行首
zb 光标置于屏幕下方,光标的列还是和移动之前一致。
z- 光标置于屏幕最后一行,光标在于行首

  注意事项:

  • z后面如果跟的凡字母则停留在原来的位置,如果同的凡字符停留在行首

  详情可翻,:h z

起此时此刻光标选择区域文本

句子

  一个句,以”.”,”!”,”?”结尾。需要专注的凡,是英文状态中之号子,中文状态下是没用的,比如”。”。

  详情可查:h sentence。

折叠

  将文本折叠起来。此时操作折叠相当给操作一行。

  这个本小不关乎,感觉少用不见面极其多,如果发采取后续会补充。 

修改

  定义:删除指定的文本以上insert模式。

  语法:

操作符 实现功能
c{motion} 删除指定动作命令选择代表的文本并且进入insert模式
cc 删除当前行并且进入insert模式
C 删除到光标到行尾的文本并且进入insert模式。相当于c$
s 删除光标下的字符并且进入insert模式。相当于cl
S 删除当前行。相当于cc。  能不按shift键我都不愿意用shift。所以一般直接用cc

 

删除

  定义:删除指定的文书。

  语法:

操作符 实现功能
 x  删除光标下的字符
 X  删除光标前一个字符
 d{motion}  删除指定动作命令代表的文本
 dd  删除当前行
 D  删除光标到当前行行尾。相当于d$

 

基本概念  

大单词

  由非空白字符组成的贯通的聚众,由空白字符分隔。字符包括主要字(iskeyword)。

  例如:

  This is mine/yours

  其中的”mine”是word,而”mine/yours”是一个WORD,这里”mine”,”/”,”yours”是三个word。这里的”/”就是iskeyword。

  详情可查看:h WORD,:h iskeyword。

滚屏

  当前窗口滚动文本内容展示。

  z{count}CR(回车键)。设置窗口高度。

  详情可查:h scroll.text ,:h xx。

组织可另行的改动 

假设光标位于行尾处的字符“h”上,而我们想要删除单词“nigh”:
The end is nigh

   我们品尝了3 种不同之办法来删除一个歌词:dbx、bdw
以及daw。他们高尔夫数(按键操作数)都是3,哪种办法最好富有重复性?我们针对当下三种植情形,都使用.命令操作一下。

  dbx包含两步操作:db 命令去至单词的发端,而后x
命令去一个字符。如果我们随后执行同一次于. 命令,它见面再度删除一个字符( . =
= x )。我莫看这发生什么价值。

  bdw包含两步。这无异糟,b 只是千篇一律赖一般的倒,而dw 完成修改。此时用.
命令会重复dw,删除从光标位置及下个单词开头的内容。不过以咱们正都于行尾了,并没“下一个单词”,所以当这场景里.
命令没什么用。不过,至少它表示了一个重复长点的操作(. = = dw)

  daw光调用一个操作:daw。这个操作不仅仅删除了该单词,它还会见去除一个空格,因此光标最终见面停在单词“is”的最终一个字符上。如果这我们应用.
命令,它见面重复上次去单词的一声令下。这同赖, . 命令会举行确实有效之事务(. =
= daw)。

  结论:daw 可以表达. 命令的绝酷威力,因此我发表其是本轮的获胜者。

  如果您发现自己要于几只地方开同样的稍修改,就可以尝尝构造你的改,让它能够被.
命令还执行。要识别出当下类时要展开定的尽,不过只要你养成了要修改只是再的习惯,那么你便会于
Vim 这里获得“奖赏”。

左右横

  统计 15

  语法:

动作命令 动作说明
h 向左移动一个字符
l 向右移动一个字符
j 向下移动一个实际行
gj 向下移动一个屏幕行
k 向上移动一个实际行
gk 向上移动一个屏幕行

 注意事项:

  • g用于区别实际行和屏幕行

小技巧

  这些多少技巧都来处于《vim实用技巧》,大家而出趣味可以更进一步读书学习。

标记

  标记有两类型的记号'(单引号),`(反撇键)。’,表示固定到行首。`,表示固定到行首的率先单非空白地方。后面与的别命令,两独品种且来,所以尽管不一一说明了单纯取’来开语法说明。

  语法:

动作命令 动作说明
m{a-zA-Z} 设置标记
‘[ 跳到最近一次修改或者复制文本的第一行位置
‘]  跳到最近一次修改或者复制文本的最后一行位置
‘>  跳到最近一次visual选择的最后一行位置
‘< 跳到最近一次visual选择的第一行位置
”(两个单引号) 跳到最近一次上方位置
‘" 跳到文件上一次打开的最后位置
‘^ 跳到光标退出插入模式的地方
‘. 跳到最后一次文件修改的地方   
]’ 跳到上一个小写字母标记(用:marks查看)的地方
[‘ 跳到下一个小写字母标记的地方

   注意事项:

  • 再有一对从来不实际意义的,不排出来了。’),’},'(,'{  相当给(,),{,}。
  • 需留意的凡:配合cmd-line下的:marks。查看有标记 。

  详情可翻:h marks。

缩进

  定义:针对文本进行缩进。缩进针对的是行,所以是文件动作选择相应之履之缩进。

  语法:

操作符 实现功能
>{motion} 向右缩进动作命令文本代表的行
>> 向左缩进当前行
<{motion} 向左缩进动作命令文本代表的行
<< 向左缩进当前行

 

操作符

  约定:如果后要以及动作命令的故{motion}表示。

  详情可查看 :h operator ,:h xx(操作符)。

行跨越 

  统计 16

  语法:

动作命令 动作说明
G 文件的最后一行
nG 跳到文件的第n行。
gg 文件第一行,相当于1G
n% 跳到文件的百分之n行。