迭代式

数学角度

迭代公式代码解决问题

常用模板

for(int len=1;len<=n;len++)
    for(int L=1;L+len-1<=n;L++)
        R=l+Len-1;

对于一个迭代问题,首先可以考虑的是是不是可以打表。打表的实质就是针对输入数据的组合数很小的情况(或者是中间某个数值)下,解决多个询问的方法。主要是空间换时间的思想。

一般这个问题一个是可以在常数项内解决问题,然后询问远远大于(不太可能,但是也是有概率的) 。

但是常常的是一个迭代式,同时也可以暴力求解,这样的话,暴力中的n*T肯定超时,但是迭代的话可以在0(N)中求出所有的可能输入的结果,这样的话就是在0(n)预处理然后再很短的复杂度完成输入数据的查询。。。

但是一定要防止忘了等值迭代,其实只要在迭代的时候把各种情况考虑到,对于没有更新的值,问问自己是不是等于自己的初始值还是等于上一个的不变的值。

比如

f(x) = f(x-1) + x % 7 == 0 ? x * x : 0

我就忘了,当x % 7 != 0 的时候,更新f(x) = f(x-1) ; 这个一定要注意。

LL table[2000000] ;
int Judge(int i) {
    while(i){
        if(i % 10 == 7) return 0 ;
        i = i / 10 ;
    }
    return 1 ;
}
int main(){
    for(int i = 1 ; i <= 2000000 ; i ++){
        if(i % 7 != 0 && Judge(i)) {
            table[i] = table[i-1] + (LL)i*i ;
        }
        else {
            table[i] = table[i-1] ; ///别忘了。
        }
    }
    int T ; cin >> T ;
    while(T --) {
        int n  ; cin >> n ;
        cout << table[n] << endl ;
    }
}

迭代式开发

学习一个简单的例子,考虑一个阶乘的计算。阶乘的因子是从1到该数的整数。迭代定义为:如果算法的定义没有包含算法本身,则叫做迭代法。

迭代式开发也被称作迭代增量式开发或迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。

教学中,对迭代和版本的区别,可理解如下: 迭代一般指某版本的生产过程,包括从需求分析到测试完成; 版本一般指某阶段软件开发的结果,一个可交付使用的产品。

posted @ 2022-02-11 21:14  PassName  阅读(225)  评论(0编辑  收藏  举报