zoukankan      html  css  js  c++  java
  • A题时遇到的一些技巧

      这篇主要是讲刷题时候遇到的一些技巧,该篇保持持续更新状态。。

      1、求数组的长度:int a[]={,,,};  int n = sizeof(a)/sizeof(a[0])

      2、求想上取整,例如7/3 = 4;  int res = a/b + !!(a%b);

      3、求数组全排序,先对数组进行从小到大排序,然后do{ 对a数组进行操作}while(next_permutation(a,a+n));

      4、背包问题时,求1到V之间的种数,由于用hash法再开一个数组,当数组过大时,内存会挂。因此用如下方法可以节约内存:(相关题目hdu2844)

        (1)方法一:当费用与价值相等的时候。

        int cnt = 0;

        for(int v=1;v<=V;++v)
          if(v==dp[v])
            ++cnt;

        (2)方法二:使用刚好装满的思想去做,最后判断大于0的个数。

      5、字符串初始化最好都为'',这样在使用的时候就不会出现由于末尾没加'',而出现乱码的情况了。

        char str1[50]={''},str2[50]="abcde";

        for(int i=0;i<strlen(str1);++i)

           str2[i] = str1[i];

        //str2[strlen(str1))='';    这句就不用加了。

       6、使用Map<类型,int>时,如果判断是否添加过时有两种方法:

      举例: Map<string,int> msi;

         1、 pair<Map<string,int>:iterator,bool> pmb = msi.insert("张三",100);

           判断pmb.second的值是否为true

        2、直接判断msi[“张三”]的值是否为0(前提是你上一次赋值确保不是0)

       7、在全局类的变量要大写,不然在提交代码后会出现编译不过的现象。例如:next,index这些变量,需要改成Next,Index。

       8、二维数组置零不要int dj[10][10] = {0};没用!需要memset函数或者循环,不然只是第一行。

  • 相关阅读:
    CSS资料:IE8 CSS hack
    作为前端制作师你必须知道的事情!
    TABLE的1PT边框
    IE6 png图片的支持
    开源公司IronTec将推动PHP进驻Android平台
    终于解决了FLASH 播放器的问题了
    Windows7 添加快速启动栏
    不能调试存储过程的解决方法
    给Asp.Net Forums的后台管理菜单做一个树形外衣
    Asp.net Forums与Cnforums研究文章集合
  • 原文地址:https://www.cnblogs.com/jlyg/p/6742100.html
Copyright © 2011-2022 走看看