iostream 未完

iostream

声明控制从标准流读取和写入到标准流的对象。 通常是唯一需要从 C++ 程序执行输入和输出的标头。

#include <iostream>

此标头中声明的所有对象都共享一个特殊属性,你可以在包含的翻译单元 <iostream>中假定它们是在定义的任何静态对象之前构造的 ,可以假定这些对象不会在定义的任何此类静态对象的析构函数之前销毁,因此,可以在程序启动和程序终止后安全地读取或写入标准流。

 

全局流对象

     
窄字符 (char) cin 标准输入流(对象)
窄字符 (char) cout  
标准输出流(对象)    
窄字符 (char)    

示例

通过<< 符 控制以拼接字节流的形式插入到标准输出

如上 递归求斐波拉契数列前50

  1 #include<iostream>
  2 using namespace std;
  3
  4
  5 //前50项
  6 long long num[50]={1,1};
  7 int main(){
  8     for(int i=2;i<=50;i++){
  9       num[i]=num[i-1]+num[i-2];
 10     }
 11     for(int i=1;i<50;i++){
 12         cout<<i<< ": " <<num[i] <<endl;
 13     }                                                                                                                14     return 0;
 15 }

很慢 会出现大量的重复计算

解决方案1: 通过开辟空间的方式来换时间

  1 #include<iostream>
  2 using namespace std;
  3
  4 long long  num[10000005];
  5  long long func(long long x){
  6         if(x==1){
  7             return 1;
  8         }
  9         if(x<10000000&&num[x]!=0){
 10               return num[x];
 11         }
 12         long long t;
 13         if(x%2 == 0){
 14           t= func(x/2)+1;
 15         }else{
 16             t=func(3* x +1)+1;
 17         }
 18         if(x<10000000){
 19             num[x]=t;
 20         }
 21         return t;                                                                                                                                                                                             22    }
 23
 24
 25 int main(){
 26   long long ans=0 ,mmax=0;
 27   for(int i=1;i<=10000000;i++){
 28    long long  t =func(i);
 29    if(t>mmax){
 30      mmax =t;
 31      ans=i;
 32    }
 33
 34   }
 35   cout<< ans <<endl;
 36   return 0;
 37 }
posted @ 2022-06-29 13:50  Aquiet  阅读(48)  评论(0编辑  收藏  举报