| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1104 人关注过本帖
标题:各位高手帮我看看这个程序(在学校的网上评测系统做的题),我写的超时了
只看楼主 加入收藏
尹卫
Rank: 1
等 级:新手上路
帖 子:19
专家分:5
注 册:2010-4-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
各位高手帮我看看这个程序(在学校的网上评测系统做的题),我写的超时了
/*两个数的和
Time Limit:1000MS  Memory Limit:65536K
Total Submit:22 Accepted:7
Description
给你一组N个整数,你从中找出两个整数并满足这样的条件:它们的和等于SUM。如果存在这样的两个数,就输出YES,否则输出NO。
Input
用while(cin>>).第一行两个整数:N,SUM。
N表示这组整数的个数,SUM表示条件。当输入0 0(即两个0)时程序结束。
第二行N个整数,每个整数用一个空格隔开。(0<=N<=10000000,0<=SUM<=1000000).
Output
一行,表示是否存在这样的两个数。
Sample Input
4 8
1 3 6 4
Sample Output
NO*/
#include<iostream>
using namespace std;
int main(){
    int n,sum,i,j,k;
    while(cin>>n>>sum){
       int a[n],b[n];
       if(n==0&&sum==0)break;
       for(i=0;i<n;i++)
          cin>>a[i];
         int c;
       for(j=0;j<n;j++){
               c=sum-a[i];
            for(k=0;k<n;k++){
                         if(c==a[k]){
                          cout<<"YES";
                              break;}
                            }
                         if(c==a[k]) break;
                                                 }
                   if(c!=a[k])cout<<"NO";   
                     
                 }
       return 0;
    }      
搜索更多相关主题的帖子: 学校 评测 系统 
2010-04-02 21:53
尹卫
Rank: 1
等 级:新手上路
帖 子:19
专家分:5
注 册:2010-4-2
收藏
得分:0 
各位啊  帮帮忙啊  就是想从算法上改进
我这样的算法太暴力了。
2010-04-02 23:56
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:4 
for(j=0;j<n;j++){
               c=sum-a[i];           //这里写错了吧,是a[j]..
            for(k=0;k<n;k++){           //k换成j+1试试时间上怎样。
在一组数中找两个数,就相当与是一个组合的问题,这个题只是在遇到符合的条件就停止了,算法也就这了,在高效的也想不出来,

离恨恰如春草,更行更远还生。
2010-04-03 00:58
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:4 
是用来做什么?
2010-04-03 07:31
尹卫
Rank: 1
等 级:新手上路
帖 子:19
专家分:5
注 册:2010-4-2
收藏
得分:0 
回复 3楼 玩出来的代码
  把i改了之后交上去还是一样的超时啊!   为什么?
   应该还是算法的问题吧
2010-04-03 09:38
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:4 
回复 楼主 尹卫
不知道你们网上评测系统是怎样一个系统!如何来处理程序或代码运行方式?如果是代码提交的话,那么谁来给你输入数据呢?

★★★★★为人民服务★★★★★
2010-04-03 10:26
壞小子
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-4-2
收藏
得分:0 
c 语言  看不懂了
2010-04-03 13:52
尹卫
Rank: 1
等 级:新手上路
帖 子:19
专家分:5
注 册:2010-4-2
收藏
得分:0 
回复 6楼 cnfarer
就是像北大那样的poj一样 http://acm.pku.,把代码交到评测系统上在进行数据的评测。
2010-04-03 15:47
书呆
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:55
专家分:188
注 册:2010-3-26
收藏
得分:0 
先排序,比sum大的数直接排除

沉醉东风月下读。柴门闭,莫管客来无。
2010-04-03 15:57
书呆
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:55
专家分:188
注 册:2010-3-26
收藏
得分:8 
程序代码:
#include <iostream>
#include <algorithm>
using namespace std;

int a[10000000];
int main()
{
    int n,sum,i,j;
    while(cin>>n>>sum)
    {
        if(n==0 && sum==0) break;
        for(i=0;i<n;i++)
            cin>>a[i];
        sort(a, a+n);
        i=0;
        for (j = n-1; a[j] > sum; j--);
        if (j>i)
        {
            while (i!=j)
            {
                if (a[i] + a[j] == sum)
                    break;
                if (a[i] + a[j] > sum) j--;
                else i++;
            }
            if(i==j)
                cout<<"NO"<<endl;
            else
                cout<<"YES"<<endl;
        }  
    }
    return 0;
}   
收到的鲜花
  • 尹卫2010-04-03 19:27 送鲜花  1朵   附言:我很赞同

沉醉东风月下读。柴门闭,莫管客来无。
2010-04-03 16:28
快速回复:各位高手帮我看看这个程序(在学校的网上评测系统做的题),我写的超时 ...
数据加载中...
 
   



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

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