为什么这样就只有10分啊,先排序再判断不行吗

P1046 [NOIP2005 普及组] 陶陶摘苹果

趣多多哇哈哈 @ 2017-05-11 08:29:36

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int a[10]={0};
    for(int i=0;i<10;i++)
    cin>>a[i];
    sort(a,a+10);
    int n;
    cin>>n;
    for(int i=0;i<10;i++){
            if(n+30<=a[i]){
                cout<<i+1;break;
            }
        }
    return 0;
}

by 和泉纱雾 @ 2017-05-11 21:36:30

int a[10]={0};的={0}是没必要的(因为有输入)要初始化也是初始化为一个很大的值。避免影响结果。

仅为萌新的意见,如有错误,请指出。(但是别喷QWQ)


by hehehemc @ 2017-05-13 09:21:39

思想简单一点

这样就能拿满分了:

#include<iostream>
using namespace std;
int main()
{
    int n,l=1,o,p,q,w,v,z=0,x,m,s,t,r,y,u,k;
    int a,b,c,d,e,f,g,h,i,j;
    cin>>a>>b>>c>>d>>e>>f>>g>>h>>i>>j;
    cin>>n;
    n+=30;
    while(l<=10)
    {
    if(a<=n){z++;a+=n;}
    if(b<=n){z++;b+=n;}
    if(c<=n){z++;c+=n;}
    if(d<=n){z++;d+=n;}
    if(e<=n){z++;e+=n;}
    if(f<=n){z++;f+=n;}
    if(g<=n){z++;g+=n;}
    if(h<=n){z++;h+=n;}
    if(i<=n){z++;i+=n;}
    if(j<=n){z++;j+=n;}
    l++;
    }
    cout<<z;
    return 0;
}

by 徐封离 @ 2017-05-14 18:37:48

当没有数据符合的时候,你输出的数能为零吗


by 徐封离 @ 2017-05-14 22:32:34

你把0排外了

加多一行cout<<i;


by dell20050604 @ 2017-05-16 19:01:13

应该是评测器卡了!

我也遇到了,改成这样:for(i=0;i<10;i++)s+=!(H<height[i]);


by 神奇的刺客 @ 2017-05-18 12:16:48

这是PASCAL题解,仅供参考。

我的思路是先用陶陶的身高来比,够得着,苹果树+1,够不着,再踩板凳,这样的话,够得着,苹果数+1,够不着就换下一个。

var a:array[1..11] of longint;
     k,n,i:longint;
begin
for i:=1 to 10 do read(a[i]);
read(k);
begin
for i:=1 to 10 do
if k>=a[i] then n:=n+1
              else if k+30>=a[i] then n:=n+1;
end;
writeln(n);
end.

by xzjds @ 2017-05-22 12:46:48

var i,ans,x:longint;a:array[1..15]of integer;
 begin
  ans:=0;
  for i:=1 to 10 do
   begin
    read(a[i]);
     end;
      read(x);
       x:=x+30;
        for i:=1 to 10 do
         if a[i]<=x then ans:=ans+1;
          write(ans);
end.

by xzjds @ 2017-05-22 12:48:34

直接加上凳子算,如果够ans就加一,可以减少时间复杂度。不过这题只有十个数据,影响不大。


|