想飞的鱼丶 发表于 2020-3-9 09:43:46

c++与c语言分别做的题 c语言放在PTA上就会有答案错误 求解!

一个贪心算法的一个题目:可以输入多组数据,每组先输入n,表示有n部电影,然后接下来n个数据,分别表示电影的开始和结束时间,输入0表示输入结束,要求安排一下尽可能多的完整看电影,最后输出最多能看几部。
思路是先排序然后在判断下一部电影的开始时间是否大于上一部的结束时间,然后c语言我用的是冒泡排序法,c++用的sort函数,放在PTA上c语言的就显示答案错误,编译器上是对的,真心不知道为什么,求解求解!

这是c++代码
#include<iostream>
#include<algorithm>

using namespace std;

struct node
{
        int begin;
        int end;
};

node film;

bool cmp(node& a, node& b)
{
        return a.end < b.end;
}

int main()
{
        int n;

        while (1)
        {
                scanf("%d", &n);
                if (n == 0)
                {
                        break;
                }
                for (int i = 0; i < n; i++)
                {
                        cin >> film.begin >> film.end;
                }

                sort(film, film + n, cmp);

                int end_time = film.end;
                int ans = 1;
                for (int i = 1; i < n; i++)
                {
                        if (end_time <= film.begin)
                        {
                                end_time = film.end;
                                ans++;
                        }
                }
                cout << ans <<endl;
        }

        return 0;
}


这是c语言代码
#include<stdio.h>

struct node
{
        int begin;
        int end;
};

struct node film;
struct node t;

int main(void)
{
        int n;

        while (1)
        {
                scanf("%d", &n);
                if (n == 0)
                {
                        break;
                }
                for (int i = 0; i < n; i++)
                {
                        scanf("%d %d", &film.begin, &film.end);
                }

                for (int i = 0; i < n - 1; i++) //排序
                {
                        for (int j = 0; j < n - i - 1; j++)
                        {
                                if (film.end > film.end)
                                {
                                        t = film;
                                        film = film;
                                        film = t;
                                }
                        }
                }

                int end_time = film.end;
                int cnt = 1;

                for (int i = 1; i < n; i++)
                {
                        if (film.begin > end_time)
                        {
                                end_time = film.begin;
                                cnt++;
                        }
                }
               
                printf("%d\n", cnt);
        }
   
        return 0;
}


想飞的鱼丶 发表于 2020-3-9 09:47:03

真心希望得到解答 谢谢了!!

想飞的鱼丶 发表于 2020-3-9 09:47:34

困扰好久的问题了

qiuyouzhi 发表于 2020-3-9 09:54:40

想飞的鱼丶 发表于 2020-3-9 09:47
困扰好久的问题了

网址呢?
我现在怀疑是输出格式问题

想飞的鱼丶 发表于 2020-3-9 10:00:44

qiuyouzhi 发表于 2020-3-9 09:54
网址呢?
我现在怀疑是输出格式问题

输出格式有问题会显示格式错误的这个只有答案错误

最后的魁拔 发表于 2020-3-9 10:07:18

pta啥那部分的题,我也在做

想飞的鱼丶 发表于 2020-3-9 10:12:01

最后的魁拔 发表于 2020-3-9 10:07
pta啥那部分的题,我也在做

这个是老师给我们找的 我刚才在题目集找也没找到

最后的魁拔 发表于 2020-3-9 10:13:15

想飞的鱼丶 发表于 2020-3-9 10:12
这个是老师给我们找的 我刚才在题目集找也没找到

你把题目发一下

想飞的鱼丶 发表于 2020-3-9 10:15:59

最后的魁拔 发表于 2020-3-9 10:13
你把题目发一下

发网站审核

最后的魁拔 发表于 2020-3-9 10:21:06

想飞的鱼丶 发表于 2020-3-9 10:15
发网站审核

老哥,大几的呢,这个是不是数据结构之类的呢

想飞的鱼丶 发表于 2020-3-9 10:21:38

最后的魁拔 发表于 2020-3-9 10:13
你把题目发一下

我等级不够 还没有权限可以加好友 加下qq吧 921377897

想飞的鱼丶 发表于 2020-3-9 10:22:37

最后的魁拔 发表于 2020-3-9 10:21
老哥,大几的呢,这个是不是数据结构之类的呢

大一 应该不算数据结构 就是一个贪心算法
页: [1]
查看完整版本: c++与c语言分别做的题 c语言放在PTA上就会有答案错误 求解!