| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 586 人关注过本帖
标题:poj1006,自己测试没问题,但提交后不断 WA...求大神帮忙
只看楼主 加入收藏
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:4 
poj1006,自己测试没问题,但提交后不断 WA...求大神帮忙
程序代码:
#include <iostream>
using namespace std;
struct
{
    char str[51];
    int next;
} arr[1100];
int top=700;
#define New(x) {x=top++;arr[x].next=-1;}

int main()
{
    //freopen("1007.in","r",stdin);
    for(int i=0; i<100; i++)
    {
        arr[i].str[0]=0;
        arr[i].next=-1;
    }
    int m,n;
    cin>>m>>n;
    for(int i=0; i<n; i++)
    {
        char temp[51];
        cin>>temp;
        int A,C,G,T;
        A=C=G=T=0;
        int srt=0;
        for(int j=m-1; j>=0; j--)
            switch(temp[j])
            {
            case 'A':
                A++;
                break;
            case 'C':
                C++;
                srt+=A;
                break;
            case 'G':
                G++;
                srt+=A+C;
                break;
            case 'T':
                srt+=A+C+G;
                break;
            }
        if(arr[srt].str[0]!=0)
        {
            while(arr[srt].next!=-1) srt=arr[srt].next;
            New(arr[srt].next);
            srt=arr[srt].next;
        }
        int j;
        for(j=0; j<m; j++)
            arr[srt].str[j]=temp[j];
        arr[srt].str[j]='\0';
    }
    int cnt=0;
    for(int i=0; ;i++)
    {
        if(cnt==n)
            break;
        if(arr[i].str[0]!=0)
        {
            int t=i;
            do
            {
                cout<<arr[t].str<<endl;
                t=arr[t].next;
                cnt++;
            }while(t!=-1);
        }
    }
    return 0;
}
2014-05-29 01:14
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:0 
不对,打错了。是1007
2014-05-29 01:15
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:20 
这道题目以前有人发过, 下面是我当时的回复, 你看看,
AC了, 用3个变量c, t, g保存字符C, T, G出现的次数,
字符是一个一个读取的, 若读取到A时, 看C, T, G出现了几次, 若读取到C, 看T, G出到了几次, c加1; 若读取到G, 看T出现了几次, g加1; 出现T, t加1;
用数组n[100]保存每个序列乱序的个数
.乱序的次数等于当出现这个字母时, 比它大的字母在前面出现次数的累加和.
例如序列TTTTGGCCAA, 一开始是四个T, 则t=4, 然后是两个G, 乱序的次数为4+4=8,g=2 然后是两个C, 次数为 8(前面的次数) +4+4+2+2=20,c=2 再是两个A, 次数为20+4+4+2+2+2+2 = 36;


12608925 pangshch 1007 Accepted 140K 0MS C 905B 2014-03-10 13:43:17
程序代码:
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int N, M;
    char s[100][51], ch;
    int n[100] = {0};
    int c, t, g;
    int i, j, k, min;

    scanf("%d%d", &N, &M);
    getchar();

    for (i = 0; i < M; i++) {
        c = t = g = 0;
        for (j = 0; j < N; j++) {
            ch = getchar();
            s[i][j] = ch;
            if (ch == 'A') {
                if (c != 0)
                    n[i] += c;
                if (t != 0)
                    n[i] += t;
                if (g != 0)
                    n[i] += g;
            }
            else if (ch == 'C') {
                c++;
                if (t != 0)
                    n[i] += t;
                if (g != 0)
                    n[i] += g;
            }
            else if (ch == 'G') {
                g++;
                if (t != 0)
                    n[i] += t;
            }
            else if (ch == 'T')
                t++;
        }
        s[i][j] = '\0';
        getchar();
    }

   

    for (i = 0; i < M; i++) {
        min = n[0];
        k = 0;
        for (j = 1; j < M; j++)
            if (min > n[j]) {
                min = n[j];
                k = j;
            }
        n[k] = 10000;              
        printf("%s\n", s[k]);
    }
    return 0;
}




 
2014-05-29 11:18
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:0 
另外, 把当时那个贴的地址发给你,你去看看。
https://bbs.bccn.net/viewthread.php?tid=428217&page=1#pid2393651
2014-05-29 11:19
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:10 
解决了吗?1007还不行吗

我不是砖家,要努力成为砖家。
2014-05-29 11:23
快速回复:poj1006,自己测试没问题,但提交后不断 WA...求大神帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028122 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved