首页 > 其他分享 >【模板】高斯消元

【模板】高斯消元

时间:2023-04-15 15:33:06浏览次数:41  
标签:maxx return int double 52 高斯消 pd 模板

image


CODE

#include<bits/stdc++.h>
using namespace std;
const double eps=1e-10;
double uu,a[52][52],b[52];
int n,l[52];bool pd;
inline void zzd(int &maxx,int i,int cnt){
	for(int j=cnt+1;j<=n;++j){//找系数最大值 
		if(fabs(a[j][i])>fabs(a[maxx][i]))
			maxx=j;
	}
	return ;
}
signed main(void){
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j){
			scanf("%lf",&a[i][j]);
		}
		scanf("%lf",b+i);
	}int cnt=1;
	for(int i=1;i<=n;++i){//枚举列 
		int maxx=cnt;
		zzd(maxx,i,cnt);
		if(fabs(a[maxx][i])<eps) continue;
		for(int j=1;j<=n;++j) swap(a[cnt][j],a[maxx][j]);//交换 
		swap(b[cnt],b[maxx]);
		uu=a[cnt][i];
		for (int j = i; j <= n; j++)
			a[cnt][j]/=uu;
		b[cnt]/=uu;
		for(int j=1;j<=n;++j){
			if(j!=cnt){
				uu=a[j][i];
				for(int k=i;k<=n;++k)
					a[j][k]-=a[cnt][k]*uu;
				b[j]-=b[cnt]*uu;
			}
		}
		l[cnt]=i;++cnt;
	}
	for(int i=1;i<=n;++i){
		if(fabs(a[i][l[i]])<eps){
			if(fabs(b[i])>=eps) return puts("-1"),0;
			pd=1;continue;
		}
	}
	if(pd) return puts("0")&0;
	double ans;
	for(int i=1;i<=n;++i)
	{
		ans=b[i]/a[i][i];
		if(ans==0) printf("x%d=0\n",i);
		else printf("x%d=%.2lf\n",i,ans);
	}
	return 0;
} 

标签:maxx,return,int,double,52,高斯消,pd,模板
From: https://www.cnblogs.com/GOD-HJ/p/17321232.html

相关文章

  • Splay树【模板】
    Splay树模板P3369[模板]普通平衡树#include<bits/stdc++.h>usingnamespacestd;#definels(x)tr[x].s[0]#definers(x)tr[x].s[1]constintmaxn=1e5+10;//nodestructnode{ints[2],val,cnt,siz,fa;//左右儿子,value,出现的次数,子树大小,父节点编号voidinit......
  • 平衡树模板——splay
    /*在splay中0不能算作是根节点,只能说是一个标记点如果谁的父亲是0,那么谁就是根节点*/#include<bits/stdc++.h>usingnamespacestd;constintM=1e5+5;constintinf=1e9;#definettr#definesizesizintcnt=0,root=0;structsplay{intch[2],siz,cnt,va......
  • 模板元编程与函数式
    参考:【公开课】现代C++进阶:模板元编程与函数式ppt和代码在高性能计算中,一般使用函数式和元编程,而不使用面向对象。简单的介绍:类型自动推导模板参数、模板特化简单的实例:#include<iostream>template<classT>Ttwice(Tt){returnt*2;}std::stringtwice(std::......
  • vue2源码-五、将模板编译解析成AST语法树1
    将模板编译成ast语法树complileToFunction方法vue数据渲染:template模板->ast语法树->render函数,模板编译的最终结果结果就是render函数。在complileToFunction方法中,生成render函数,需要以下两个核心步骤:通过parserHTML方法:将模板(template或html)内容编译成ast语法树通过co......
  • 算法基础模板整理(动态规划篇)
    背包问题01背包问题static const int N = 1010;int dp[N][N], v[N], w[N], n, c;int main(){    cin >> n >> c;    for(int i = 1; i <= n; i ++ ) cin >> v[i] >> w[i];    for(int i = 1; i <= n; i ++ )    ......
  • 算法基础模板整理(基础图论篇)
    拓扑排序bool topo(){    queue<int> q;    for(int u = 1; u <= n; u ++ )        if(!ind[u]) q.push(u);        int cnt = 0;    while(!q.empty()){        int u = q.front();        q.pop(); ......
  • 算法基础模板整理(高阶数据结构篇)
    树状数组动态区间和询问+点修改int lowbit(int x){    return x & -x;}void add(int x, int v){    for(int i = x; i <= n; i += lowbit(i)) tree[i] += v;}int query(int x){    int res = 0;    for(int i = x; i......
  • SGU 200 Cracking RSA (高斯消元+大数高精度)
    题目地址:SGU200这题居然还考大数高精度。。无语。。令有该因子偶数个为0,奇数个为1,这样就满足异或运算了,即奇+奇=偶,偶+偶=偶,奇+偶=奇。然后建立方程高斯消元求变元个数free_num,那么子集的个数就是2^free_num-1。减1是去掉0的情况。注意要用大数运算代码如下:#include<iostream>#in......
  • POJ 1753 Flip Game (高斯消元)
    题目地址:POJ1753第三次做这道题了。第一次是刚学搜索的时候做的,第二次是刚学状态压缩枚举的时候做的,这次是刚学高斯消元、、每次都做得很艰辛。。目测这题应该没了别的方法了吧。。。。。。这题除了高斯消元外还需要枚举变元,方法是状态压缩枚举,然后返回去迭代解方程。代码如下:#inc......
  • POJ 1830 开关问题 (高斯消元)
    题目地址:POJ1830高斯消元第一发。一个地方逻辑判断出现了失误,调了一下午啊。。。通过高斯消元来找矩阵的秩,然后2^(自由元的数量)就是答案。因为对于每个自由元,都有0和1两种状态可选。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#includ......