您的位置:首页 > 其它

[递归]Simple prefix compression

2016-06-02 22:55 162 查看
原题地址:Simple prefix compression



主要的知识点是递归,但是貌似这题不用递归也可以。

不过还是复习下递归的知识点吧。

递归是指某个函数直接或间接的调用自身。问题的求解过程就 是划分成许多相同性质的子问题的求解,而小问题的求解过程 可以很容易的求出,这些子问题的解就构成里原问题的解。

递归解题的总体思想:

将待求解问题的解看作输入变量x的函数f(x)

通过寻找函数g,使得f(x) = g(f(x-1))

并且已知f(0)的值,就可以通过f(0)和g求出f(x)的值.

递归的三个要点!!!

**- 递归式:如何将原问题划分成子问题。

- 递归出口:递归终止的条件,即最小子问题的 求解,可以允许多个出口

- 界函数:问题规模变化的函数,它保证递归的 规模向出口条件靠拢**

代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX 10000

int main(){
int i=0,N;
string tmp,newStr,result;
string Str[MAX];
cin>>N;
int tmpN=N;
while(N--){
cin>>Str[i++];
}
for(int j=0;j<tmpN-1;j++){
int cnt=0,flag=0;
int len=min(Str[j].length(),Str[j+1].length());
for(int k=0;k<len;k++){
if(Str[j][k]==Str[j+1][k]) cnt++;
else if(k==0) flag=1  ;
else break;
}
if(flag){
tmp='0';
}
else{
tmp=Str[j+1].substr(cnt-1);
}
for(int p=0;p<j;p++){
newStr+=Str[p];
}
newStr+=tmp;
}
cout<<newStr.size()<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归