奇葩的uva102(多次WA后已AC)

来源:互联网 发布:声卡机架软件下载 编辑:程序博客网 时间:2024/06/06 09:16

暴力算法

如果打草稿的话,推荐利用矩阵,形象生动。

(注:max应改为min意思上更接近,懒得改了)

---------------------------------------------------多次WA不知原因

/* W A*/
#include <iostream>
#include <iomanip>
using namespace std;


int main()
{
    int a,b[10]= {0};
    while(cin>>a)
    {
        b[10]={0};
        b[1]=a;
        for(int i1=2; i1<=9; i1++)
            cin>>b[i1];
        int c[4][4]={0};
        for(int i2=1; i2<=3; i2++)
        {
            c[1][i2]=b[i2+3]+b[i2+6];
        }
        for(int i2=1; i2<=3; i2++)
        {
            c[2][i2]=b[i2]+b[i2+6];
        }
        for(int i2=1; i2<=3; i2++)
        {
            c[3][i2]=b[i2+3]+b[i2];
        }
        int sum[6]= {0};
        sum[0]=c[1][1]+c[2][3]+c[3][2];
        sum[1]=c[1][1]+c[2][2]+c[3][3];
        sum[2]=c[1][3]+c[2][1]+c[3][2];
        sum[3]=c[1][3]+c[2][2]+c[3][1];
        sum[4]=c[1][2]+c[2][1]+c[3][3];
        sum[5]=c[1][2]+c[2][3]+c[3][1];
        int max1=99999999,t;
        for(int i=0; i<=5; i++)
        {
            if(sum[i]<max1)
            {
                max1=sum[i];
                t=i;
            }
        }
        switch(t)
        {
        case 0:
            cout<<"BCG";
            break;
        case 1:
            cout<<"BGC";
            break;
        case 2:
            cout<<"CBG";
            break;
        case 3:
            cout<<"CGB";
            break;
        case 4:
            cout<<"GBC";
            break;
        case 5:
            cout<<"GCB";
            break;
        }
        cout<<" "<<max1<<endl;
    }


    return 0;
}

---------------------------------------------------中途换了算法又换回来了,最后浪费了两个小时后发现竟然只是min要设的更大才好。。。

/* AC*/

#include <iostream>
#include <iomanip>
using namespace std;


int main()
{
    int a,b[10]= {0};
    while(cin>>a)
    {
        b[10]={0};
        b[1]=a;
        for(int i1=2; i1<=9; i1++)
            cin>>b[i1];
        int c[4][4]={0};
        for(int i2=1; i2<=3; i2++)
        {
            c[1][i2]=b[i2+3]+b[i2+6];
        }
        for(int i2=1; i2<=3; i2++)
        {
            c[2][i2]=b[i2]+b[i2+6];
        }
        for(int i2=1; i2<=3; i2++)
        {
            c[3][i2]=b[i2+3]+b[i2];
        }
        int sum[6]= {0};
        sum[0]=c[1][1]+c[2][3]+c[3][2];
        sum[1]=c[1][1]+c[2][2]+c[3][3];
        sum[2]=c[1][3]+c[2][1]+c[3][2];
        sum[3]=c[1][3]+c[2][2]+c[3][1];
        sum[4]=c[1][2]+c[2][1]+c[3][3];
        sum[5]=c[1][2]+c[2][3]+c[3][1];
        long long max1=99999999999999999,t;
        for(int i=0; i<=5; i++)
        {
            if(sum[i]<max1)
            {
                max1=sum[i];
                t=i;
            }
        }
        switch(t)
        {
        case 0:
            cout<<"BCG";
            break;
        case 1:
            cout<<"BGC";
            break;
        case 2:
            cout<<"CBG";
            break;
        case 3:
            cout<<"CGB";
            break;
        case 4:
            cout<<"GBC";
            break;
        case 5:
            cout<<"GCB";
            break;
        }
        cout<<" "<<max1<<endl;
    }


    return 0;

}

------------------------------------------------------------

两个小时后结论:经过对比我认为测试数据中可能会有超过int的值。。。。也可能是压int最大上限的值。。。

水题WA浪费生命(sad)


0 0