美文网首页
暑假小结

暑假小结

作者: Ell1ot | 来源:发表于2019-09-14 11:47 被阅读0次
    易错的i

    在循环中注意i从0还是1开始循环,注意循环结束条件的+1,-1,<=,<,可以使用例子判断。循环内有时会修改i的值,应先进行其他计算再修改i。注意循环内外变量的使用和改变。

    常见策略

    使用分治法将较大问题分解,求解后合并,在递归中需要仔细判断条件;贪心法常适用于最优解的问题,同样将大的问题分解成一个个相同的步骤,编码时需要谨慎,防止遗漏或出错;若输入数值的取值范围较小,允许时间复杂度达到n^3 与n^4 ,可以想到暴力破解,递归枚举;动态规划的关键是找准状态转移方程,并定义边界,有时候很难想,需要自己先用简单的数据模拟一下。
    递归枚举题目推荐

    使用函数并保证准确
    //对数组进行操作:
    int a[maxn];
    memset(a,0,maxn);
    sort(a,a+maxn);
    reverse(a,a+maxn);
    //对二维数组
    int a[maxn][maxn];
    for(int i=0;i<maxn;i++) memset(a[i],0,maxn);
    sort(a[i],a[i]+maxn);
    
    //math:
    pow(x,y);
    fabs(x);  //浮点型
    //algorithm:
    abs(x);  //整数型
    max(x,y);min(x,y);
    swap(x,y);
    __gcd(x,y);  //最大公约数
    //cctype:
    isdigit(c);  //判断是否为数字
    islower(c);  //判断是否为小写字母
    isupper(c);  //判断是否为大写字母
    

    sort函数要求引入两个指针,并对两指针中间的的内容进行排序,若希望排序数组a下标0到下标3(a[0]-a[3])的元素,需要使用sort(a,a+4)而不是sort(a,a+3)。这点需要注意。

    Tips

    1.可以提前做好代码模板,这在大多数题中都适用:

    #include<bits/stdhc++.h>    //包含c++所有头文件 
    using namespace std;
    const int maxn=;
    int ;                       //定义全局变量,可以省略使用函数时的引入
    
    int main(){
        
    }
    

    2.有时题目输入为不定长数组,并且不给出数组长度n,因此无法使用常规的(一),可以使用(二)。

    //(一)
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i];
    //(二)
    int i=0;
    do{
      cin>>a[i++];
    }while(getchar()!='\n');
    

    相关文章

      网友评论

          本文标题:暑假小结

          本文链接:https://www.haomeiwen.com/subject/pffxyctx.html