posts - 195,  comments - 30,  trackbacks - 0

启发1,double运算速度比Int快
启发2,m选N的组合数,如果n已知,只需循环即可
#include<iostream>
#include<cstdlib>
using namespace std;
  int main()
  {
  //freopen("s.txt","r",stdin);
  //freopen("key.txt","w",stdout);
  double n[1001];
  int i,j,k,m;
  int flag,num;
  while(cin>>num,num)
  {
  flag=0;
  for(m=1;m<=num;m++)
  {
   cin>>n[m];
  }
  for(i=1;i<=num;i++)
  {
    for(j=1;j<=num;j++)
     {
       for(k=1;k<=num;k++)
       {
      if(n[i]+n[j]+n[k]==0)
     {
    flag=1;break;
      }
       }
       if(flag==1)break;
   }
   if(flag==1)break;
   }
  if(flag==1)cout<<"yes"<<endl;
  else cout<<"no"<<endl;
 }

  //system("PAUSE");
  return   0;
  }

posted on 2009-06-29 11:44 luis 阅读(1035) 评论(11)  编辑 收藏 引用 所属分类: 给我启发题

FeedBack:
# re: joj 2173 有点启发,double运算速度比Int快
2009-07-16 20:34 | waigx
你好,我用c语言做的,不管怎么样做都是超时错误,能帮我看看吗?谢谢了
#include<stdio.h>
#include<stdlib.h>
main(){
int i,j,k,num;
int flag;
double array[1003];
scanf("%d",&num);
while (num){
flag=0;
for ( i=1 ; i<=num ; i++ ){
scanf("%f",&array[i]);
}
for ( i=1 ; i<=num ; i++ ){
for ( j=1 ; j<=num ; j++ ){
for ( k=1 ; k<=num ; k++ ){
if ( array[i]+array[j]+array[k]==0 ){
flag=1;
break;
}
}
if( flag==1 ) break;
}
if( flag==1 ) break;
}
if ( flag==0 ) printf("no\n");
else if ( flag==1 ) printf("yes\n");
scanf("%d",&num);
}
system("pause");
return 0;
}
  回复  更多评论
  
# re: joj 2173 有点启发,double运算速度比Int快
2009-07-16 20:35 | waigx
感觉代码都差不多啊,为什么啊  回复  更多评论
  
# re: joj 2173 有点启发,double运算速度比Int快
2009-07-20 12:58 | luis
@waigx
那个system("pause");前面应该加//  回复  更多评论
  
# re: joj 2173 有点启发,double运算速度比Int快
2009-08-09 19:34 | crazy_coder
从哪看出来double 比 int 快的?  回复  更多评论
  
# re: joj 2173 有点启发,double运算速度比Int快
2009-08-09 19:40 | luis
@crazy_coder
用double没有超时,用int超时了  回复  更多评论
  
# re: joj 2173 有点启发,double运算速度比Int快
2009-08-09 23:01 | crazy_coder
@luis
恐怕不是这原因吧。题目没有明确读入的数据是什么类型啊?如果测试数据是
double 型的,而定义的数组为int 型的话,这样读入数据肯定要超时的。  回复  更多评论
  
# re: joj 2173 有点启发,double运算速度比Int快
2009-08-11 09:12 | waigx
@luis
提交的时候已经把那一句注释掉了
还是不行啊...怎么办...
这个题目搞得我很气愤
郁闷了一晚上,怎么调,就是超时  回复  更多评论
  
# re: joj 2173 有点启发,double运算速度比Int快
2010-01-31 22:42 | kuza
@waigx
二楼的程序,我也用C写,跟你的可以说是一模一样,就是输入到数组那里不一样,我用scanf("%lf",&arr[i])就没问题,你试试
汗..double真的比int快啊!这是为什么?用int超时(至少超过3秒),而double0.06秒就过了!!太不可思议了~~  回复  更多评论
  
# re: joj 2173 有点启发,double运算速度比Int快
2011-01-06 13:28 |
double是寄存器所用的格式, integer在内存中读取, 所以double快  回复  更多评论
  
# re: joj 2173 有点启发,double运算速度比Int快
2011-01-08 10:07 | luis
@陈
这样啊,原来如此,谢谢了  回复  更多评论
  
# re: joj 2173 有点启发,double运算速度比Int快
2012-05-14 21:51 | 实践出真理
首先你们用程序测试过嘛?? 试试看那个更快
/*#include<stdio.h>
int main(){
int i;
freopen("1.txt","w",stdout);
for(i=0;i<10000;i++){
printf("%d\n",i);
}
return 0;
}
*/
#include<stdio.h>
#include<time.h>
void fun1(){
int n;
while(scanf("%d",&n)!=EOF);
//scanf("%d",&n);
//for(int i=1;i<=100000;i++)
// n++;
}
void fun2(){
double n;
while(scanf("%lf",&n)!=EOF);
// for(int i=1;i<=100000;i++)
// n++;

}
int main(){
freopen("1.txt","r",stdin);
freopen("2.txt","w",stdout);
clock_t start,end;
start=clock();
fun1();
//fun2();
end=clock();
printf("%d\n",end-start);
return 0;

}
同样读取 int类型的 只读取用double存比int慢 如果进行运算还是一样慢
费解 应该用事实考证吧  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2012年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

友情链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜