模板-高斯消元(hihocoder 1195)
发布日期:2021-11-16 12:56:51
浏览次数:2
分类:技术文章
本文共 1165 字,大约阅读时间需要 3 分钟。
高斯消元裸题,存为模板吧。值得注意的是精度1e-8、1e-10过不去,但是1e-6能过,据说每次找最大的行消元可以减小误差。
#include#include #include #include #include #include #include #include using namespace std;const double eps = 1e-6; //坑!bool Equal(double a,double b){ return (fabs(a-b) >n>>m){ for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; } cin>>b[i]; } bool mul=0; for(int i=1;i<=n;i++){ //处理第i列 bool flag = false; for(int j=i;j<=m;j++){ if(!Equal(a[j][i],0.0)){ //发现第i列不为0的行j if(i!=j)Swap(j,i); //交换ij两行 flag=1; break; } } if(!flag){ //如果找不到这样的行 mul=1; break; } for(int j=i+1;j<=m;j++){ //第i+1行~m行的第i列清空 double tmp = a[j][i]/a[i][i]; for(int k=1;k<=n;k++){ //处理a[j][k] a[j][k]-=a[i][k]*tmp; } //处理b[j] b[j]-=b[i]*tmp; } } bool no=0; for(int i=1;i<=m;i++){ bool flag=0; if(!Equal(b[i],0)){ for(int j=1;j<=n;j++){ if(!Equal(a[i][j],0))flag=1; } if(!flag){ no=1; } } } if(no){ printf("No solutions\n"); continue; } if(mul){ printf("Many solutions\n"); continue; } for(int i=n;i>=1;i--){ for(int j=i+1;j<=n;j++){ b[i]-=a[i][j]*ans[j]; a[i][j]=0; } ans[i]=b[i]/a[i][i]; } for(int i=1;i<=n;i++){ printf("%d\n",(int)(ans[i]+eps)); } } return 0;}
转载地址:https://blog.csdn.net/squee_spoon/article/details/47304867 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年03月22日 01时19分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
#{}和${}的区别是什么?
2019-04-26
LeetCode题解(1508):子数组和排序后的区间和(Python)
2019-04-26
LeetCode题解(1509):三次操作后最大值与最小值的最小差(Python)
2019-04-26
LeetCode题解(1510):石子游戏IV(Python)
2019-04-26
LeetCode题解(1497):检查数组对是否可以被k整除(Python)
2019-04-26
LeetCode题解(0781):森林中的兔子(Python)
2019-04-26
LeetCode题解(0930):和相同的二元子数组(Python)
2019-04-26
LeetCode题解(0939):最小面积矩形(Python)
2019-04-26
LeetCode题解(0954):二倍数对数组(Python)
2019-04-26
LeetCode题解(0957):N天后的牢房(Python)
2019-04-26
LeetCode题解(0974):和可被K整除的子数组(Python)
2019-04-26
LeetCode题解(0981):基于时间的键值存储(Python)
2019-04-26
LeetCode题解(0992):K个不同呢的子数组(Python)
2019-04-26
LeetCode题解(1001):网格照明(Python)
2019-04-26
LeetCode题解(1044):最长重复子串(Python)
2019-04-26
LeetCode题解(1048):最长字符串链(Python)
2019-04-26
LeetCode题解(1072):按列翻转得到最大值等行数(Python)
2019-04-26
LeetCode题解(1086):前五科的均分(Python)
2019-04-26
LeetCode题解(1364):顾客的可信联系人数量(SQL)
2019-04-26
LeetCode题解(1369):获取最近第二次的活动(SQL)
2019-04-26