标题:【oj】 趣味比赛 runtime error不造问题出在哪。。求大神指教。。
取消只看楼主
浮世的烧酒丶
Rank: 2
等 级:论坛游民
帖 子:19
专家分:21
注 册:2016-10-20
结帖率:83.33%
已结贴  问题点数:20 回复次数:4 
【oj】 趣味比赛 runtime error不造问题出在哪。。求大神指教。。
// 求大神看看我的代码。。实在是发现不了错在哪。。写的比较烂。。见谅见谅
趣味比赛
发布时间: 2017年12月12日 16:36   最后更新: 2017年12月12日 16:44   时间限制: 1000ms   内存限制: 128M   SPJ

描述
小明参加了学校举办的火眼金睛趣味比赛,比赛的规则是这样的:由若干男生和若干女生组成的队伍站成一排,小明要在最短的时间内在队伍中找到一个人,这个人前面的男生的个数等于从他开始的队伍(包含他自己)中女生的个数。小明现在很头疼,比赛方规定小明可以求助好友,作为他的好朋友,请你帮帮他。 输出要求的人的位置,若不存在输出No Response

输入
第一行是一个整数T代表测试用例组数。
每个测试用例的第一行是一个整数n代表队伍长度;第二行是一个长度为n的字符串,使用M代表男生,F代表女生。题目保证字符串合法(即不含其他字母)。(1<=n<=1e6)(人从0开始编号)

输出
对于每个测试用例输出要求的位置,若位置不存在则输出 “No Response”(不含分号)。若有多个位置满足题意则输出任意一个。

样例输入1
1
2
MF
样例输出1
1
程序代码:
#include <stdio.h>
int main(){
    int n,m,x,y;
    int i = 0,j,k;
    char people[100000];

    scanf("%d",&n);
    while(i < n){
        scanf("%d",&m);
        getchar();
        scanf("%s",people);
        people[m] = '\0';
        if(m < 2){
            printf("No Response");
            if(i != n-1)
                printf("\n");
            continue;
        }
        j = 1;
        while(j < m){
            k = 0;
            x = 0;
            y = 0;
            while(k < m){
                if(k < j){
                    if(people[k] == 'M')
                        x++;
                }else{
                    if(people[k] == 'F')
                        y++;
                }
                k++;
            }
            if(x == y && x != 0){
                printf("%d",j);
                break;
            }
            j++;
        }
        if(j == m && x != y)
            printf("No Response");
        if(i != n-1)
                printf("\n");
        i++;
    }
    return 0;
}
搜索更多相关主题的帖子: 比赛 输出 Response people printf 
2017-12-25 21:11
浮世的烧酒丶
Rank: 2
等 级:论坛游民
帖 子:19
专家分:21
注 册:2016-10-20
得分:0 
自己找到一个错,但还是runtime error。。
程序代码:
#include <stdio.h>
int main(){
    int n,m,x,y;
    int i = 0,j,k;
    char people[100000];

    scanf("%d",&n);
    while(i < n){
        scanf("%d",&m);
        getchar();
        scanf("%s",people);
        people[m] = '\0';
        if(m < 2){
            printf("No Response");
            if(i != n-1)
                printf("\n");
            continue;
        }
        j = 1;
        while(j < m){
            k = 0;
            x = 0;
            y = 0;
            while(k < m){
                if(k < j){
                    if(people[k] == 'M')
                        x++;
                }else{
                    if(people[k] == 'F')
                        y++;
                }
                k++;
            }
            if(x == y && x != 0){
                printf("%d",j);
                break;
            }
            j++;
        }
        if(j == m)                                //这里改了改
            if(x != y || ( x == y && x == 0))  
                printf("No Response");
        if(i != n-1)
                printf("\n");
        i++;
    }
    return 0;
}
2017-12-25 21:59
浮世的烧酒丶
Rank: 2
等 级:论坛游民
帖 子:19
专家分:21
注 册:2016-10-20
得分:0 
回复 3楼 虫眼
m是字符长度,也就是题中的人数n
2017-12-26 17:55
浮世的烧酒丶
Rank: 2
等 级:论坛游民
帖 子:19
专家分:21
注 册:2016-10-20
得分:0 
回复 4楼 rjsp
多谢多谢!代码过了!
看到大神们的代码,再看看自己写的真的会自惭形秽。。
我会努力的!大神也要加油!
再次感谢!
2017-12-26 18:04
浮世的烧酒丶
Rank: 2
等 级:论坛游民
帖 子:19
专家分:21
注 册:2016-10-20
得分:0 
回复 5楼 九转星河
多谢大神的指点~
感觉还是自己见得太少,遇到啥都想最简单的方法。。
多听牛人看法,多看大神代码!
加油!
再次感谢!
2017-12-26 18:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483717-1-1.html




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

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