首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改进这一点?

如何改进这一点?
EN

Stack Overflow用户
提问于 2014-08-14 15:39:30
回答 1查看 367关注 0票数 1

有n组朋友在公共汽车站前排队等候。第i组由艾曼组成。另外,这条路线上只有一辆公交车。这辆公共汽车的大小是x,也就是说它可以同时运送x个人。

当公交车到达公共汽车站时(它总是空着的),排在队头的几组人进入公交车。当然,一群朋友不想分开,所以只有在公交车可以容纳整个群体的情况下,他们才会去公交车。另一方面,没有人愿意丢掉自己的位置,那就是群体的顺序永远不会改变。

问题是:如何选择公交车的大小x,使得公交车可以运送所有的群体,并且每次当公交车离开汽车站时,公交车内没有空位(车内的总人数等于x)?

输入格式:

第一行包含唯一的整数n (1≤n≤10^5)。第二行包含n个空格分隔的整数a1、a2、…,an (1≤ai≤10^4).

输出格式:

按递增顺序打印总线的所有可能大小。

示例:

代码语言:javascript
复制
8
1 2 1 1 1 2 1 3

输出:3 4 6 12

我写了这段代码:

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(void)
{
    int max=0,sum=0,i,n;
    cin>>n;
    int values[100000];

    for ( i = 0; i < n; i++ )
    {
         cin>>values[i];
         sum = sum + values[i];
        if ( values[i] > max )
            max = values[i];
    }
    int p = 0,j;
    int count = 0;
    vector<int> final;
    for ( i = 0; i < n; i++ )
    {
        p = p + values[i];
        j = 0;
        if ( p >= max && sum%p == 0)
        {
            flag = 0;
            while ( j < n )
            {
                garb = p;
                while (garb!= 0)
                {
                    garb = garb - values[j++];
                    if ( garb < 0 )
                        flag = 1;
                }

            }
            if ( flag == 0 )
            {
                final.push_back(p);
                count++;
            }
        }
     }
        sort(final.begin(),final.end());
        for ( j = 0; j < count; j++ )
        {
            cout<<final[j]<<"\t";   
        }
        return 0;
    }

编辑:我这样做了,基本上,我检查找到的除数是否满足条件,如果在任何时间点,我得到一个负整数与值的差,我用一个标志来标记它。然而,它现在似乎给了我一个seg故障。为什么?

首先,我从所有可能的值中计算出最大值,然后,我检查它是否是值之和的除数。但是,这种方法不适用于输入,因为:

代码语言:javascript
复制
10
2 2 1 1 1 1 1 2 1 2

我的输出是2 7 14,而输出应该只是7 14。还有没有其他我可以用的方法呢?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-08-14 15:59:40

我可以想到以下简单的解决方案(因为你现在关心的是正确性,而不是时间复杂性):

  1. 计算所有人工智能的总和(就像你已经做的那样)。
  2. 计算所有人工智能的最大值(就像你已经做的那样)。
  3. 求出所有大于max(ai)的和的因子。
  4. 对于每个因素,遍历ai并检查是否满足总线条件。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25302532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档