zoukankan      html  css  js  c++  java
  • 那些年的那些**错误

    这里是一个总结,也可以是大家的提醒

    而且,我才不会告诉你是哪题呢

    各路大佬有什么避免这些错误的方法可以在下面评论!!!

    不该犯的

    变量名写错

    double ans=0x7ffffff;
    void DFS(double now,int num,int sum)
    {
        if(sum==n){
            ans=min(ans,now);
            return ;
        }
        if(now>sum)
            return ;
        ...
    }
    

    看到错误了吗?

    没有?咦?为什么nowsum比较呀?

    int为什么与double比较呢?

    正确代码:

        if(now>ans)
            return ;
    

    DP结果输出错误

        for(i=0;i<=g[1];i++)
            for(j=0;j<=g[2];j++)
                for(k=0;k<=g[3];k++)
                    for(l=0;l<=g[4];l++){
                        int move=1+i+2*j+3*k+4*l;
                        if(i!=0) f[i][j][k][l]=max(f[i][j][k][l],f[i-1][j][k][l]+a[move]);
                        if(j!=0) f[i][j][k][l]=max(f[i][j][k][l],f[i][j-1][k][l]+a[move]);
                        if(k!=0) f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k-1][l]+a[move]);
                        if(l!=0) f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k][l-1]+a[move]);
                    }
        cout<<f[g[i]][g[2]][g[3]][g[4]]<<endl;
        return 0;
    

    这个错误太明显了,但是我依然调了半个上午……

    好吧,我知道你看出来了,我输出了一个神奇的变量:f[g[i]][g[2]][g[3]][g[4]]!!!

    正确写法:

        cout<<f[g[1]][g[2]][g[3]][g[4]]<<endl;
        return 0;
    

    少写一条语句

    string ans="";
    void zk(int n)
    {
        if(s[n-1]>=s[n+1]){
            ans+=s[n];
            return ;
        }
        if(s[n+1]-1==s[n-1])
            return ;
        string an="";
        int i,j;
        for(i=s[n-1]+1;i<=s[n+1]-1;i++)
            for(j=1;j<=p2;j++){
                if(p1==1)
                    an+=(char)i;
                else if(p1==2)
                    an+=(char)(i-32);
                else
                    an+='*';
            }
        if(p3==2)
            reverse(an.begin(),an.end());
        ans+=an;
    }
    void sk(int n)
    {
        if(s[n-1]>=s[n+1]){
            ans+=s[n];
            return ;
        }
        if(s[n+1]-1==s[n-1])
            return ;
        string an="";
        int i,j;
        for(i=s[n-1]+1;i<=s[n+1]-1;i++)
            for(j=1;j<=p2;j++){
                if(p1==3)
                    an+='*';
                else
                    an+=(char)i;
            }
        if(p3==2)
            reverse(an.begin(),an.end());
    }
    

    这是一条简单的错误,我用了一个小时把他找出来了

    没错,这两个函数特别对称,所以,所以…所以……

    sk函数里好像少了一句话?

    补上她,顺利AC

    void sk(int n)
    {
        if(s[n-1]>=s[n+1]){
            ans+=s[n];
            return ;
        }
        if(s[n+1]-1==s[n-1])
            return ;
        string an="";
        int i,j;
        for(i=s[n-1]+1;i<=s[n+1]-1;i++)
            for(j=1;j<=p2;j++){
                if(p1==3)
                    an+='*';
                else
                    an+=(char)i;
            }
        if(p3==2)
            reverse(an.begin(),an.end());
        ans+=an;
    }
    
  • 相关阅读:
    IDEA中给main方法的args传参
    spark (Java API) 在Intellij IDEA中开发并运行
    Spark在Windows下的环境搭建
    Android Studio开发第三篇版本管理Git
    Android Studio开发第二篇创建新项目
    Android Studio开发第一篇QuickStart
    AndroidのInputFillter之按字符过滤长度,一个中文当两个字符
    DownloadProvider源码解析——与Volley对比
    EGit系列第三篇——远程提交代码
    WP8.1学习系列(第二十七章)——ListView和GridView入门
  • 原文地址:https://www.cnblogs.com/Garbage-Only-one/p/12195226.html
Copyright © 2011-2022 走看看