高斯消元 hdu3359 Kind of a Blur
2015-07-23 00:40
543 查看
最基础的高斯消元(浮点数)版,可以用来测试模板
这个模板直接从大白书上敲下来的,感觉还行
讲解一下这个模板的用法
构造的是A*r=b
行列的下标都是从0开始
A[i][j]是增广矩阵的第i行的第j列
b存放在对应的A[i]
里面
调用函数后,A[i]
里面存放的就是对应的r矩阵了
这个模板直接从大白书上敲下来的,感觉还行
讲解一下这个模板的用法
构造的是A*r=b
行列的下标都是从0开始
A[i][j]是增广矩阵的第i行的第j列
b存放在对应的A[i]
里面
调用函数后,A[i]
里面存放的就是对应的r矩阵了
#include<cstdio> #include<map> #include<set> #include<cmath> #include<cstring> #include<queue> #include<stack> #include<cctype> #include<vector> #include<functional> #include<algorithm> using namespace std; typedef long long LL; typedef pair<int, int> PII; const int MX = 100 + 5; const int INF = 0x3f3f3f3f; typedef double Matrix[MX][MX]; Matrix A, S; void gauss(Matrix A, int n) { int i, j, k, r; for(i = 0; i < n; i++) { r = i; for(int j = i + 1; j < n; j++) { if(fabs(A[j][i]) > fabs(A[r][i])) r = j; } if(r != i) for(j = 0; j <= n; j++) swap(A[r][j], A[i][j]); for(k = i + 1; k < n; k++) { double f = A[k][i] / A[i][i]; for(j = i; j <= n; j++) A[k][j] -= f * A[i][j]; } } for(i = n - 1; i >= 0; i--) { for(j = i + 1; j < n; j++) { A[i] -= A[j] * A[i][j]; } A[i] /= A[i][i]; } } int main() { //freopen("input.txt", "r", stdin); int m, n, d, first = true; while(~scanf("%d%d%d", &n, &m, &d), m) { memset(A, 0, sizeof(A)); for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { scanf("%lf", &S[i][j]); } } for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { int cnt = 0, nx, ny; for(int dx = -d; dx <= d; dx++) { nx = dx + i; if(nx < 0 || nx >= m) continue; int p = d - abs(dx); for(int dy = -p; dy <= p; dy++) { ny = dy + j; if(ny < 0 || ny >= n) continue; cnt++; A[i * n + j][nx * n + ny] = 1; } } A[i * n + j][m * n] = cnt * S[i][j]; } } gauss(A, m * n); if(first) first = false; else printf("\n"); for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { printf("%8.2lf", A[i * n + j][m * n]); } printf("\n"); } } return 0; }
相关文章推荐
- 读rbac新解有感
- Android线程和handler
- 21_Android中常见对话框,光传感器,通过重力感应器编写出指南针应用,帧动画,通过Jav代码的方式编写补间动画,通过XML的方式编写补间动画
- iOS数组和字符串的转化
- Android使用JNI实现Java与C之间传递数据
- jqPaginator-master | kkpager-master 这两个分页插件的用法
- PCB中加入logo
- 测试- 雷神领域
- Volley从零创建一个简单的文字传输
- CocosDeshion's android.mk 文件的理解
- keil 5 for mdk 不支持lpc2138的解决办法
- asp,mdb,工具
- PCB布局布线技巧
- Codeforces Round #313 (Div. 1) C. Gerald and Giant Chess
- 软件开发中的资源管理
- linux下mysql开启远程访问权限及防火墙开放3306端口
- 软件开发中的资源管理
- Linux 下安装 pyenv(Python多版本管理)
- HDU2102——《A计划》
- 芯片封装名称说明