[递归]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)的值.
递归的三个要点!!!
**- 递归式:如何将原问题划分成子问题。
- 递归出口:递归终止的条件,即最小子问题的 求解,可以允许多个出口
- 界函数:问题规模变化的函数,它保证递归的 规模向出口条件靠拢**
代码:
主要的知识点是递归,但是貌似这题不用递归也可以。
不过还是复习下递归的知识点吧。
递归是指某个函数直接或间接的调用自身。问题的求解过程就 是划分成许多相同性质的子问题的求解,而小问题的求解过程 可以很容易的求出,这些子问题的解就构成里原问题的解。
递归解题的总体思想:
将待求解问题的解看作输入变量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; }
相关文章推荐
- 有关数据库SQL递归查询在不同数据库中的实现方法
- C#中的递归APS和CPS模式详解
- WinForm实现按名称递归查找控件的方法
- 使用SqlServer CTE递归查询处理树、图和层次结构
- C#中的尾递归与Continuation详解
- C#递归实现显示文件夹及所有文件并计算其大小的方法
- php递归创建目录的方法
- PHP递归创建多级目录
- Javascript递归打印Document层次关系实例分析
- C++使用递归方法求n阶勒让德多项式完整实例
- oracle 使用递归的性能提示测试对比
- 使用curl递归下载软件脚本分享
- Perl脚本实现递归遍历目录下的文件
- JavaScript的递归之递归与循环示例介绍
- C# 递归查找树状目录实现方法
- 全排列算法的非递归实现与递归实现的方法(C++)
- php递归列出所有文件和目录的代码
- java递归菜单树转换成pojo对象
- 一个JavaScript递归实现反转数组字符串的实例
- Java中的递归详解(用递归实现99乘法表来讲解)