#include #include<math.h> using namespace std; const int maxn=10005; // 定义常量 maxn 为 10005 float a[maxn]; // 定义浮点数组 a,大小为 maxn int b1[maxn]; // 定义整型数组 b1,大小为 maxn float b2[maxn]; // 定义浮点数组 b2,大小为 maxn float c[maxn]; // 定义浮点数组 c,大小为 maxn int main() { int n1,first; // 定义整型变量 n1 和 first cin>>n1; // 输入 n1 的值 for(int i=0;i<n1;i++) // 循环 n1 次 { int tmp; // 定义整型变量 tmp cin>>tmp; // 输入 tmp 的值 cin>>a[tmp]; // 输入 a[tmp] 的值 if(!i) first=tmp; // 如果 i 为 0,则将 tmp 的值赋给 first } int n2; // 定义整型变量 n2 cin>>n2; // 输入 n2 的值 for(int i=0;i<n2;i++) // 循环 n2 次 cin>>b1[i]>>b2[i]; // 输入 b1[i] 和 b2[i] 的值 for(int i=first;i>=b1[0];i--) // 循环 i 从 first 到 b1[0] { int tmp=i-b1[0]; // 定义整型变量 tmp 为 i-b1[0] c[tmp]=a[i]/b2[0]; // 计算 c[tmp] 的值 for(int j=0;j<n2;j++) // 循环 n2 次 a[tmp+b1[j]]-=c[tmp]*b2[j]; // 计算 a[tmp+b1[j]] 的值 } int cnt1=0,cnt2=0; // 定义整型变量 cnt1 和 cnt2,初始值为 0 for(int i=first;i>=0;i--) // 循环 i 从 first 到 0 { if(fabs(c[i])>=0.05) cnt1++; // 如果 fabs(c[i])>=0.05,则 cnt1 加 1 if(fabs(a[i])>=0.05) cnt2++; // 如果 fabs(a[i])>=0.05,则 cnt2 加 1 } cout<<cnt1; // 输出 cnt1 的值 for(int i=first;i>=0;i--) // 循环 i 从 first 到 0 { if(fabs(c[i])>=0.05) printf(' %d %.1f',i,c[i]); // 如果 fabs(c[i])>=0.05,则输出 i 和 c[i] 的值 } if(!cnt1) cout<<' 0 0.0'; // 如果 cnt1 为 0,则输出' 0 0.0' cout<<endl; // 输出换行 cout<<cnt2; // 输出 cnt2 的值 for(int i=first;i>=0;i--) // 循环 i 从 first 到 0 { if(fabs(a[i])>=0.05) printf(' %d %.1f',i,a[i]); // 如果 fabs(a[i])>=0.05,则输出 i 和 a[i] 的值 } if(!cnt2) cout<<' 0 0.0'; // 如果 cnt2 为 0,则输出' 0 0.0' }

C++ 代码注释详解:线性代数方程求解

原文地址: https://www.cveoy.top/t/topic/qjeT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录