Vijos 1052 贾老二算算术
来源:互联网 发布:手机阻拦广告软件 编辑:程序博客网 时间:2024/05/16 16:18
难度:*
输入:
第一行一个n,表示是n元的方程组
以下n行,每行n+1个数,前n个数分别表示系数,最后一个表示结果
输出:
第一行n个数,表示方程的解
板块:数学
数据结构:——
算法:高斯消元法
分析:用高斯消元法即可解决
时间复杂度:O(n^3)
代码:
#include <cstdio>
#include <cstring>
#include <cstdlib>
double f[101][102],ans[101];
int n;
double get(double i)
{
return i>0?i:-i;
}
void swap(int i,int j)
{
int k;
double tmp[102];
for (k=1;k<=n+1;k++) tmp[k]=f[i][k];
for (k=1;k<=n+1;k++) f[i][k]=f[j][k];
for (k=1;k<=n+1;k++) f[j][k]=tmp[k];
}
void gauss(void)
{
int i,j,k;
double r;
for (i=1;i<n;i++)
{
for (j=i+1;j<=n;j++)
if (get(f[i][i])<get(f[j][i])) swap(i,j);
for (j=i+1;j<=n;j++)
if (f[j][i]!=0)
{
r=f[i][i]/f[j][i];
for (k=i;k<=n+1;k++) f[j][k]=f[i][k]-r*f[j][k];
}
}
ans[n]=f[n][n+1]/f[n][n];
for (i=n-1;i>0;i--)
{
for (j=n;j>i;j--) f[i][n+1]-=f[i][j]*ans[j];
ans[i]=f[i][n+1]/f[i][i];
}
for (i=1;i<=n;i++) printf("%d ",(int)(ans[i]+0.5+1e-6));
printf("\n");
}
int main(void)
{
int i,j;
scanf("%d",&n);
for (i=1;i<=n;i++)
for (j=1;j<=n+1;j++) scanf("%lf",&f[i][j]);
gauss();
return 0;
}
总结:
1、细节类
·输出保留整数的浮点数:printf("%d",(int)(ans[i]+0.5+1e-6));
0 0
- Vijos 1052 贾老二算算术
- 【Vijos P1052】 贾老二算算术 高斯消元傻题
- [vijos1052] 贾老二算算术
- Matlab 学习 算算术篇
- 算算时间
- 算算退休后能拿多少钱?
- 算算你的IQ
- 算算收入排名
- 2501. 算算式
- 2501. 算算式
- Sicily 2501. 算算式
- Sicily 2501.算算式
- 算算男女生比例
- Sicily 2501 算算式
- Sicily 2501. 算算式
- sicily 2501. 算算式
- 算算你的时间差
- 咱也来算算英文单词的“分数”
- Android Uri的几种使用方法,分享共同学习
- 在网页中 生成QQ在线临时对话框/聊天
- [ACM] POJ 2409 Let it Bead (Polya计数)
- ssh 免密码登陆
- android.app.SuperNotCalledException: Activity {com.lcxx.nur.view/com.lcxx.nur.view.doctorsadvice.Doc
- Vijos 1052 贾老二算算术
- 建设网站优质外链
- linux进程通信之共享内存
- 149_leetcode_Text Justification
- 多校第一场 1010(HDU4870) rating---DP
- 在线投票系统中刷票与反刷票的斗争
- 中科燕园GIS外包案例之10----水资源webgis系统
- 如何把PDF转WORD文字转换器在线转换
- SWT图片处理(大小缩放,透明,置灰,旋转,反色)