看懂题目的意思 直接模拟就可以了 好像不用递归就可以了。。虽然这周学的是递归 还是偷了一些懒 直接模拟
在说这个题目的意思 本来可以写的很清楚的下标 题目非要把两个字符串的表示方法写的这么相似 不在纸上比划比划 不是那么容易明白题目的意思 用户体验欠佳~·
另外 还要注意理解这一句话
If j = 0, that is, strings do not have any common prefix, then the second string is prefixed with zero byte, and so the total length actually increases.
说的是如果没有相同前缀的话 也要在两个字符串之间加一个0 所以总的长度反而会增加
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
int N;
int total = 0;
string a1,a2;
scanf("%d",&N);
while(N--)
{
char tem[300];
scanf("%s",tem);
if(total)
{
a2 = tem;
int k = 0;
for(unsigned i = 0;i < a1.length() && i < a2.length();++i)
{
if(a1[i] == a2[i])k++;
else break;
}
total = total + a2.length() - k + 1;
a1 = a2;
}
else
{
a1 = tem;
total = a1.length();
}
//cout<<"total "<<total<<endl;
}
printf("%d\n",total);
return 0;
}