算法复习——高斯消元(ssoi)
题目:
题目描述
Tom 是个品学兼优的好学生,但由于智商问题,算术学得不是很好,尤其是在解方程这个方面。虽然他解决 2x=2 这样的方程游刃有余,但是对于下面这样的方程组就束手无策了。
x+y=3
x-y=1
于是他要你来帮忙。给定一个线性多元一次方程组,请你求出所有未知数的解。
保证在 int 范围内可以处理所有问题。
输入格式
输入文件的第一行一个数字 N(1≤N≤100),表示给定的方程组中的未知数的个数,同时也是这个方程组含有的方程个数。
第 2 到 N+1 行,每行 N+1 个数。每行的前 N 个数表示第 1 到 N 个未知数的系数。第 N+1 个数表示 N 个未知数乘以各自系数后再相加的和。
输出格式
输出一行,有 N 个整数,表示第 1 到 N 个未知数的值(整数解),而且数据保证有整数解。
样例数据 1
输入 [复制]
2
1 1 3
1 -1 1
输出
2 1
题解:
高斯消元模板题,具体过程见:http://jingyan.baidu.com/album/39810a23e40c80b636fda63a.html?picindex=1
代码:
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<cmath>
- #include<ctime>
- #include<cctype>
- #include<cstring>
- #include<string>
- #include<algorithm>
- using namespace std;
- double map[][],ans[];
- int n;
- int main()
- {
- //freopen("a.in","r",stdin);
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- for(int j=;j<=n+;j++)
- scanf("%lf",&map[i][j]);
- for(int i=;i<=n;i++)
- {
- bool flag=false;
- if(!map[i][i])
- {
- for(int j=i+;j<=n;j++)
- if(map[j][i])
- {
- flag=true;
- for(int k=i;k<=n+;k++)
- swap(map[j][k],map[i][k]);
- }
- if(flag==false) continue;
- }
- for(int j=i+;j<=n;j++)
- {
- double temp=map[j][i]/map[i][i];
- for(int k=i;k<=n+;k++)
- map[j][k]-=temp*map[i][k];
- }
- }
- for(int i=n;i>=;i--)
- {
- ans[i]=map[i][n+]/map[i][i];
- for(int j=i-;j>=;j--)
- map[j][n+]-=map[j][i]*ans[i];
- }
- for(int i=;i<=n;i++)
- cout<<(int)(ans[i]+0.5)<<' ';
- return ;
- }
算法复习——高斯消元(ssoi)的更多相关文章
- 【算法】高斯消元&线性代数
寒假作业~就把文章和题解3道题的代码扔在这里啦——链接: https://pan.baidu.com/s/1kWkGnxd 密码: bhh9 1.HNOI2013游走 #include <bit ...
- 【BZOJ】2466: [中山市选2009]树 高斯消元解异或方程组
[题意]给定一棵树的灯,按一次x改变与x距离<=1的点的状态,求全0到全1的最少次数.n<=100. [算法]高斯消元解异或方程组 [题解]设f[i]=0/1表示是否按第i个点的按钮,根据 ...
- 2017年中国大学生程序设计竞赛-中南地区赛暨第八届湘潭市大学生计算机程序设计大赛题解&源码(A.高斯消元,D,模拟,E,前缀和,F,LCS,H,Prim算法,I,胡搞,J,树状数组)
A------------------------------------------------------------------------------------ 题目链接:http://20 ...
- 高斯消元初步(Gauss算法)
Gauss算法,称为高斯消元算法,用来解决n元一次方程,在解决线性方程问题起着重要作用. 简述 运用高斯消元的方法,我们可以在O(n3)的时间求出n元线性方程,但是由于时间复杂度的原因,请注意题目数据 ...
- 算法竞赛进阶指南0x35高斯消元与线性空间
高斯消元 目录 高斯消元 ACWing207. 球形空间产生器(点击访问) 求解思路 代码 ACWing208. 开关问题(点击访问) 思路 代码 总结 欣赏 线性空间 定义 ACWing209. 装 ...
- HDU5088——Revenge of Nim II(高斯消元&矩阵的秩)(BestCoder Round #16)
Revenge of Nim II Problem DescriptionNim is a mathematical game of strategy in which two players tak ...
- 高斯消元 分析 && 模板 (转载)
转载自:http://hi.baidu.com/czyuan_acm/item/dce4e6f8a8c45f13d7ff8cda czyuan 先上模板: /* 用于求整数解得方程组. */ #inc ...
- 【HDU 3949】 XOR (线性基,高斯消元)
XOR Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 高斯消元 & 线性基【学习笔记】
高斯消元 & 线性基 本来说不写了,但还是写点吧 [update 2017-02-18]现在发现真的有好多需要思考的地方,网上很多代码感觉都是错误的,虽然题目通过了 [update 2017- ...
随机推荐
- 重置Mysql的root密码及用户权限设置
一.重置Mysql的root密码 方法一: 直接进入localhost/phpmyadmin修改用户root的权限,设置密码: 方法二: 进入mysql控制台:mysql->use mysql ...
- Cordova应用的JavaScript代码和自定义插件代码的调试
我之前写过三篇Cordova相关的技术文章.当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候. 本文就介绍Cordova应用的调试步骤. 如果 ...
- 字符串赋值方式理解 sizeof 和strlen的一些区别
#include<stdio.h>#include<string.h> int main(){ int a,i=0; char ch[10000]; while(scanf( ...
- js 两个数组进行去重处理,返回去重后的数组
1.去重的方法为: array_diff(a, b) { for (var i = 0; i < b.length; i++) { for (var j = 0; j < a.length ...
- Velocity模板语法说明
Velocity基本语法 "#"用来标识Velocity的关键字,包括#set.#if .#else.#end.#foreach.#end.#include.#parse.#mac ...
- websphere7.0异常:SRVE0255E: 尚未定义要处理 /wcm 的 Web 组/虚拟主机
websphere7.0错误:SRVE0255E: 尚未定义要处理 /wcm 的 Web 组/虚拟主机. SRVE0255E: 尚未定义要处理 /wcm 的 Web 组/虚拟主机.SRVE0255E: ...
- Bootstrap历练实例:基本按钮组
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- Bootstrap历练实例:表单控件状态(禁用的字段集fieldset)
禁用的字段集 fieldset 对 <fieldset> 添加 disabled 属性来禁用 <fieldset> 内的所有控件. <!DOCTYPE html>& ...
- Paxos算法与Zookeeper分析,zab (zk)raft协议(etcd) 8. 与Galera及MySQL Group replication的比较
mit 分布式论文集 https://github.com/feixiao/Distributed-Systems wiki上描述的几种都明白了就出师了 raft 和 zab 是类似的,都是1.先选举 ...
- javase(5)_面向对象
一.概述 1.面向对象是一种思想,让我们由执行者变成指挥者,执行者是面向过程,指挥者是面向对象.例如人开冰箱门,开冰箱门这个动作应该属于门而不是人,冰箱自己最清楚门应该怎么开,人只是调用了冰箱的这个动 ...