[SDOI2006]线性方程组 高斯消元
2018-01-02 19:29
465 查看
板子题,注意消元的时候无解判断和常数项的操作
码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define eps 1e-8
int i,j,n,k,st;
double x[105],a[105][105];
int gauss()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[i][j]-eps>0||a[i][j]+eps<0){st=j;break;}
} double o=a[i][st];
for(k=n+1;k>=1;k--)
a[i][k]/=o;
for(j=1;j<=n;j++)//消元
{
if(j==i)continue;
if(a[j][st]-eps>0||a[j][st]+eps<0)
{
double lo=a[j][st];
for(k=1;k<=n+1;k++)
{
a[j][k]-=lo*a[i][k];
}
}
}
}
bool dj=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[i][j]-eps>0||a[i][j]+eps<0)
{
if(x[j]+eps>0&&x[j]-eps<0)
{
x[j]=a[i][n+1]; break;
}else
{
if(fabs(x[j]-a[i][j])<eps)dj=1;
else return -1;
}
}
}
if(j==n+1)
{
if(a[i][j]-eps>0||a[i][j]+eps<0)return -1;
else dj=1;
}
}
if(dj)return 1;
else return 0;
}
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n+1;j++)
{
scanf("%lf",&a[i][j]);
}
}
int o=gauss();
if(o==-1)printf("-1");
else if(o==1) printf("0");
else for(i=1;i<=n;i++)
printf("x%d=%.2lf\n",i,x[i]);
}
码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define eps 1e-8
int i,j,n,k,st;
double x[105],a[105][105];
int gauss()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[i][j]-eps>0||a[i][j]+eps<0){st=j;break;}
} double o=a[i][st];
for(k=n+1;k>=1;k--)
a[i][k]/=o;
for(j=1;j<=n;j++)//消元
{
if(j==i)continue;
if(a[j][st]-eps>0||a[j][st]+eps<0)
{
double lo=a[j][st];
for(k=1;k<=n+1;k++)
{
a[j][k]-=lo*a[i][k];
}
}
}
}
bool dj=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[i][j]-eps>0||a[i][j]+eps<0)
{
if(x[j]+eps>0&&x[j]-eps<0)
{
x[j]=a[i][n+1]; break;
}else
{
if(fabs(x[j]-a[i][j])<eps)dj=1;
else return -1;
}
}
}
if(j==n+1)
{
if(a[i][j]-eps>0||a[i][j]+eps<0)return -1;
else dj=1;
}
}
if(dj)return 1;
else return 0;
}
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n+1;j++)
{
scanf("%lf",&a[i][j]);
}
}
int o=gauss();
if(o==-1)printf("-1");
else if(o==1) printf("0");
else for(i=1;i<=n;i++)
printf("x%d=%.2lf\n",i,x[i]);
}
相关文章推荐
- bzoj 4820: [Sdoi2017]硬币游戏 概率dp+高斯消元+KMP
- [BZOJ1923][SDOI2010]外星千足虫(高斯消元---异或方程组)
- BZOJ2707 [SDOI2012]走迷宫 【概率dp + tarjan + 高斯消元】
- poj 2065 SETI(高斯消元求模线性方程组)
- bzoj1923 [Sdoi2010]外星千足虫 高斯消元
- [高斯消元 概率 KMP] BZOJ 4820 [Sdoi2017]硬币游戏
- 高斯消元解线性方程组
- bzoj 1923 [Sdoi2010]外星千足虫(高斯消元+bitset)
- 2707: [SDOI2012]走迷宫 tarjan+高斯消元解期望方程组
- bzoj4820 [Sdoi2017]硬币游戏 高斯消元+概率+kmp
- BZOJ 1923: [Sdoi2010]外星千足虫 [高斯消元XOR]
- BZOJ1923 [Sdoi2010]外星千足虫 【高斯消元】
- BZOJ.2707.[SDOI2012]走迷宫(期望 Tarjan 高斯消元)
- BZOJ 4820 [Sdoi2017]硬币游戏 ——期望DP 高斯消元
- poj 2065 SETI 【高斯消元 + 快速幂 解模线性方程组】
- 高斯消元解线性方程组
- [BZOJ2707][SDOI2012]走迷宫(tarjan+概率期望+高斯消元)
- 【BZOJ4820】[Sdoi2017]硬币游戏 AC自动机+概率DP+高斯消元
- [KMP 高斯消元] BZOJ 4820: [Sdoi2017]硬币游戏
- 【BZOJ 1923】 [Sdoi2010]外星千足虫 高斯消元