博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高斯消元(浮点数主列法消元,有剪枝细节..
阅读量:5331 次
发布时间:2019-06-15

本文共 1242 字,大约阅读时间需要 4 分钟。

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 const double EPS=1e-8; 7 8 typedef vector
vec; 9 typedef vector
mat;10 11 vec Gauss(const mat& A,const vec& b){12 int n=A.size();13 mat B(n,vec(n+1));14 for(int i=0;i
abs(B[pivot][i]))) pivot=j;20 swap(B[i],B[pivot]);21 if(abs(B[i][i])
=0;--i){29 ans=x[i];30 for(int j=i+1;j

可能有一个令你疑惑的地方是为什么22行,j从i+1开始除,30行,j从i+1开始除

因为这些地方其实是被搞成系数为1的,我们在计算的时候不会用到这些值,所以我们不用去管当前消去的这一变量

最后一个步骤容易忽略,那就是回带的步骤,因为这个方法算完得到的B矩阵(不含增广,是一个上三角行列式,所以我们不断迭代就好了

这个方法的复杂度是n^3的

对于1000规模的,我们就需要剪枝了....

下面附上剪枝后的模板...sdut2878这个题需要剪枝

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 const double EPS=1e-8; 7 8 typedef vector
vec; 9 typedef vector
mat;10 11 vec Gauss(const mat& A,const vec& b){12 int n=A.size();13 mat B(n,vec(n+1));14 for(int i=0;i
abs(B[pivot][i]))) pivot=j;20 if(pivot!=i) swap(B[i],B[pivot]);21 if(abs(B[i][i])
=0;--i){32 ans=x[i];33 for(int j=i+1;j

20,25行是剪枝的地方

转载于:https://www.cnblogs.com/linkzijun/p/6695089.html

你可能感兴趣的文章
Python之旅Day14 JQuery部分
查看>>
core--线程池
查看>>
redux-effect
查看>>
Swift和OC混编
查看>>
Android轻量级的开源缓存框架ASimpleCache
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
分层图最短路【bzoj2763】: [JLOI2011]飞行路线
查看>>
linux下编译复数类型引发的错误:expected unqualified-id before '(' token
查看>>
codeforces 1041A Heist
查看>>
字典常用方法
查看>>
Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
查看>>
python的猴子补丁monkey patch
查看>>
架构模式: API网关
查看>>
正则验证积累
查看>>
Linux学习-汇总
查看>>
jQuery瀑布流+无限加载图片
查看>>
83. 删除排序链表中的重复元素
查看>>
bzoj1048 [HAOI2007]分割矩阵
查看>>