《算法笔记》学习记录007

一、学习概览

p74~80

2.9补充
2.9.1cin与cout
C++中的输入输出函数
需要添加头文件
不需要指定输入输出格式+不需要&
不推荐使用
除了第6章string
2.9.2浮点数的比较
1.等于运算符
不等于加感叹号
2.大于运算符
3.小于运算符
4.大于等于运算符
5.小于等于运算符
6.圆周率π
2.9.3复杂度
1.时间复杂度
2.空间复杂度
空间换时间
4.2节散列法
3.编码复杂度

2.9.1cin与cout

1.添加头文件

cin>>与cout<<,添加头文件“#include”和“using namespace std;”。

2.cin用法

#include <iostream>
using namespace std;
int main(){
	int n;
	double db;
	char c;
	char str[100];
	//string str; 
	
	cin>>n;
	
	//读入多个变量 
	cin>>n>>db>>c>>str;
	
	//读入一整行,用getline函数
	//把一整行读入char型数组str[100]中 
	cin.getline(str,100); 
	
	//string容器——第6章
	//getline(cin,str);
	 
	return 0;
}

3.cout用法

#include <iostream>
#include <iomanip> //控制double精度时用到 

using namespace std;
int main(){
	int n;
	double db;
	char c;
	char str[100];
	
	//输出多个变量 
	cout<<n<<db<<c<<str;
	
	//在变量中间加空格或字符串
	cout<<n<<" "<<db<<" "<<c<<" "<<str; 
	cout<<n<<"haha"<<db<<"heihei"<<c<<"wawa"<<str; 
	
	//两种换行方式,endl=endline 
	cout<<n<<"\n"<<db<<endl; 
	
	//控制double型的精度,下面输出123.46
	cout<<setiosflags(ios::fixed)<<setprecision(2)<<123.4567<<endl; 
	 
	return 0;
}

2.9.2浮点数的比较

1.==

引入一个极小数eps:

#include <stdio.h>
#include <math.h>
const double eps=1e-8;
#define Equ(a,b) ((fabs((a)-(b)))<(eps)) //fabs()绝对值函数

int main(){
	double db=1.23;
	if(Equ(db,1.23)){
		printf("true");
	}else{
		printf("false");
	}
	return 0;
}

在这里插入图片描述
必须使用Equ函数的情况:

#include <stdio.h>
#include <math.h>

int main(){
	double db1=4*asin(sqrt(2.0)/2);
	double db2=3*asin(sqrt(3.0)/2);//sqrt开平方根 
	if(db1==db2){
		printf("true");	
	}else{
		printf("false");
	}
	return 0;
}

在这里插入图片描述
修正误差后:

#include <stdio.h>
#include <math.h>
const double eps=1e-8;
#define Equ(a,b) ((fabs((a)-(b)))<(eps))

int main(){
	double db1=4*asin(sqrt(2.0)/2);
	double db2=3*asin(sqrt(3.0)/2);//sqrt开平方根 
 	if(Equ(db1,db2)){
 		printf("true");
 	}else{
 		printf("false");
 	}
	return 0;
}

在这里插入图片描述

2.其他定义

#include <stdio.h>
#include <math.h>
const double eps=1e-8;
const double Pi=acos(-1.0); //π的定义

#define Equ(a,b) ((fabs((a)-(b)))<(eps)) //== 
#define More(a,b) (((a)-(b))>(eps)) //> 
#define Less(a,b) (((a)-(b))<(-eps)) //<
#define MoreEqu(a,b) (((a)-(b))>(-eps)) //>=
#define LessEqu(a,b) (((a)-(b))<(eps)) //<=

3.注意

  1. 保证变量在定义域内
  2. 用eps修正编译器输出-0.00

2.9.3复杂度

1.时间复杂度

  1. 基本定义:时间复杂度 基本运算 评估算法时间效率的有效标准 时间复杂度的常数
  2. 高等级的幂次会覆盖低等级的幂次
  3. 对于一般的OJ系统,一秒能承受的运算次数大概是10^7 ~ 10^8。

2.空间复杂度

考虑到空间一般够用,常采用空间换时间的策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值