这样,怎能不愤怒!--【附注】1129解题报告

换了一下,就AC了,其实还是WA!
原来WA的程序,是直接从原来具有的数值开始++,但毫无疑问,答案一定是正确的。


现在,是从1开始往上加,如果遇到相同的,继续加。
bool check(int value,int i)
{
int j=2;
while(mg[i][j]!=0)
{
if(node[mg[i][j]].index==value)
return false;
j++;
}
return true;
}
对于这道题目,我感觉有点愤愤的,就是偷懒了一下,就这样的后果么?


Source Code




















Problem: 1129 User: omycle
Memory: 256K Time: 0MS
Language: C++ Result: Accepted


  • Source Code
    #include <iostream>
    using namespace std;
    int mg[30][30];
    typedef struct
    {
    // int bz;//代表的含义
    int index;//代表分的channel
    }Channel;
    int TotalCount=0;
    Channel node[27];
    void Init()
    {
    for(int i=1;i<=TotalCount;i++)
    {
    node[i].index=0;
    }
    }
    bool check(int value,int i)
    {
    int j=2;
    while(mg[i][j]!=0)
    {
    if(node[mg[i][j]].index==value)
    return false;
    j++;
    }
    return true;
    }
    void Bianli()
    {//初始情况i=0;
    for(int i=1;i<=TotalCount;i++)
    {
    if(node[i].index==0)
    node[i].index=1;
    int j=1;
    int temp=node[i].index;//保存这个数值用于比较
    while(mg[i][j]!=0)
    {
    if(node[mg[i][j]].index==0||node[mg[i][j]].index==temp)
    {
    node[mg[i][j]].index=1;
    while(1)
    {
    if(node[mg[i][j]].index!=temp&&check(node[mg[i][j]].index,mg[i][j]))
    break;
    node[mg[i][j]].index++;
    }
    }
    j++;
    }
    }
    }
    void FindMax()
    {
    int c=0;
    for(int i=1;i<=TotalCount;i++)
    {
    if(node[i].index>c)
    c=node[i].index;
    }
    if(c==1)
    printf("%d channel needed.\n",c);
    else
    printf("%d channels needed.\n",c);
    }
    int main()
    {
    int n=0;
    cin>>n;
    while(n)
    {
    memset(mg,0,sizeof(mg));
    TotalCount=n;
    int k=1;
    while(k<=n)
    {
    char a[28];
    memset(a,0,sizeof(char)*28);
    cin>>a;
    int temp_i=0;
    int len=strlen(a)-1;
    for(int j=0;j<len;j++)
    {
    while(a[temp_i]==':')
    {
    temp_i++;
    }
    if(a[temp_i]!=':')
    mg[k][j]=a[temp_i]-'A'+1;
    temp_i++;
    }
    k++;
    }
    Init();
    Bianli();
    FindMax();
    cin>>n;
    }
    return 0;
    }


评论

  1. 这个问题本来已经证明是NP问题,你的贪心算法能AC,只能说明OJ的数据弱..并说明不了你的算法正确..除非你给出证明~ 如果是那样,恭喜你~

    回复删除
  2. 大哥你这是什么算法,有点看不懂啊!

    回复删除

发表评论

此博客中的热门博文

提交了30次才AC ---【附】POJ 2488解题报告

n个进程共享m个资源得死锁问题证明