//今有5羊4犬3鸡2兔值钱1496,4羊2犬6鸡3兔值钱1175,3羊1犬7鸡5兔值钱958,2羊3犬5鸡1兔值钱861,求羊值多少钱?//
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
long long lcm(long long a,long long b)//最大公约数
{
if(a%b==0)return b;
else return lcm(b,a%b);
}
long long gcd(long long a,long long b)//最小公倍数
{
return a/lcm(a,b)*b;
}
int main()
{
int a[4][5]={5,4,3,2,1496,4,2,6,3,1175,3,1,7,5,958,2,3,5,1,861},i,j,k,s,t;
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)cout<<a[i][j]<<" ";
cout<<endl;
}
for(j=3;j>0;j--)
{
if(a[j][j]!=0)
{
for(i=0;i<j;i++)
{
s=gcd(a[i][j],a[j][j])/a[i][j];//第i行需要扩大的倍数
t=gcd(a[i][j],a[j][j])/a[j][j];//第j行需要扩大的倍数
cout<<"s"<<s<<" t"<<t<<" ";
for(k=0;k<5;k++)
{
a[i][k]=a[i][k]*s-a[j][k]*t;
cout<<a[i][k]<<" ";
}
cout<<endl;
}
cout<<"_________________________________________________"<<endl;
}
}
cout<<a[1][4]/a[1][0];
//这一步换成cout<<a[0][4]/a[0][0】才应该是正常的程序
getch();
}
我试着用咱们解方程的步骤计算,效果还不错,但是没办法处理0,比如:
5 4 3 2 1496
4 2 6 3 1175
3 1 7 5 958
2 3 5 1 861
s1 t2 1 -2 -7 0 -226
s1 t3 -2 -7 -9 0 -1408
s1 t5 -7 -14 -18 0 -3347
_________________________________________________
s18 t7 67 62 0 0 19361
s2 t1 3 0 0 0 531 //运行到这里我的程序就不知道怎么处理了,希望有那位大哥可以指点。
_________________________________________________
177
//我感觉自己应该看一点和矩阵运算有关的算法了,加油!