[SDOI2006] 线性方程组
2024-08-30 01:37:23
刚开始写了个消成上三角的,结果狂wa。
后来经过研究发现,消成上三角那种不能直接判断无解或无穷多解,需要其它的操作。
所以干脆学了个消成对角线的,写了一发A了。
其实两种消元的方法都差不多,就当存个板子吧。
#include<cstdio> void swap(double &x,double &y)
{
double t=x;x=y;y=t;
} double v(double rx)
{
return rx>?rx:(-rx);
} int n;
double a[][];
double x[];
const double eps=0.00001; int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n+;j++)
scanf("%lf",&a[i][j]);
for(int i=;i<=n;i++)
{
int p=i;
for(int j=i+;j<=n;j++)
if(v(a[j][i])>v(a[p][i]))p=j;
if(i!=p)for(int j=i;j<=n+;j++)swap(a[i][j],a[p][j]);
if(v(a[i][i])<eps)continue;
double div=a[i][i];
for(int j=i;j<=n+;j++)a[i][j]/=div;
for(int j=;j<=n;j++)
{
if(i==j)continue;
double div=a[j][i];
for(int k=;k<=n+;k++)
a[j][k]-=div*a[i][k];
}
}
int no=,inf=;
for(int i=;i<=n;i++)
{
int p=;
while(p<=n+&&v(a[i][p])<=eps)p++;
if(p==n+)no=;
if(p>n+)inf=;
}
if(no){printf("-1");return ;}
if(inf){printf("");return ;}
for(int i=n;i;i--)x[i]=a[i][n+];
for(int i=;i<=n;i++)
printf("x%d=%.2lf\n",i,x[i]);
return ;
}
最新文章
- H5拍照应用开发经历的那些坑儿
- [转]Design Pattern Interview Questions - Part 2
- Redis设计与实现-客户端服务端与事件
- POJ 1836 Alignment 最长递增子序列(LIS)的变形
- Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
- java.lang.OutOfMemoryError: unable to create new native thread如何解决
- Swift 本地推送通知UILocalNotification
- Aspx 页面生命周期
- 如何用C语言封装 C++的类,在 C里面使用
- javascript项目实战---ajax实现无刷新分页
- Ubuntu16.04 安装NVIDIA显卡驱动
- Navicat Premium for Mac完美破解
- nodemanager 无法启动报错“doesn&#39;t satisfy minimum allocations”
- 使用fiddler对手机上的程序进行抓包
- Blender 使用
- bower配置私服nexus3
- DevExpress v17.2新版亮点——VCL篇(一)
- sqlserver查询---分配cpu等资源
- 一个简单的获取RGB值方式
- bootstrap之输入框组
热门文章
- JQuery查找标签
- 7.windows-oracle实战第七课 --约束、索引
- J. Distance on the tree(树链剖分+线段树)
- C/C++中开平方函数sqrt()的用法
- 新服务器搭建-总结: 下载nginx,jdk8,docker-compose编排(安装mysql,redis) 附安装
- Table布局的优缺点
- MFC的sendmessage和postmessage 以及sendmessagetimeout
- 关于TensorFlow2的tf.function()和AutoGraph的一些问题解决
- VMware vSphere ESXi 和 vCenter Server 5.1 文档地址
- shell_backup_MySQL