换行:newline 向下移动一行,并不移动左右 回车:return 到当前行的最左边行
例如: abcd d后面换行则会到d的正下方 d后面回车则会移动到a的前面
linux/unix换行:\n(0x0A) newline 表示回车+换行 MAC回车:\r(0x0D) return 表示回车+换行 Windows回车换行:\r\n(0x0D,0x0A) 表示回车+换行 Enter = 回车+换行(\r\n) 注:\r\n连用时,不能调换顺序 历史: 回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别。
在计算机还没有出现之 前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正 好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车(return)”,告诉打字机把打印头定位在左边界;另一个叫做“换行(newline)”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。 问题: 如下代码AC #include <bits/stdc++.h> using namespace std; char c1[1001],c2[1001]; int len1,len2,dp[1001][1001]; int main(){ cin>>c1>>c2; len1=strlen(c1); len2=strlen(c2); for(int i=0;i<len1;i++) dp[0]=0; for(int i=0;i<len2;i++) dp[0]=0; for(int i=1;i<=len1;i++){ for(int j=1;j<=len2;j++){ if(c1[i-1]==c2[j-1]){ dp[j]=dp[i-1][j-1]+1; }else{ dp[j]=max(dp[i-1][j],dp[j-1]); } } } cout<<dp[len1][len2]; }
|