高斯消元(poj1753

2021-07-10 11:10:17 字數 975 閱讀 6719

參考了kuangbin的部落格,注意自由變元那邊

#include#include#include#include#includeusing namespace std;

const int maxn=30;

const int inf=0x3fffffff;

int a[maxn][maxn];//增廣矩陣

int x[maxn];

int free_x[maxn];

char str[20][20]; // 高斯消元法解方程組(gauss-jordan elimination).(-2表示有浮點數解,但無整數解,

//-1表示無解,0表示唯一解,大於0表示無窮解,並返回自由變元的個數)

//有equ個方程,var個變元。增廣矩陣行數為equ,分別為0到equ-1,列數為var+1,分別為0到var.

int gauss(int equ,int var)

//轉換為階梯陣.

col=0; // 當前處理的列

for(k = 0;k < equ && col < var;k++,col++)

if(max_r!=k)

for(j=k-1;j>=0;j--)

}int main()

int ans1=gauss(16,16);

init();

for(int i=0;i<4;i++)

for(int j=0;j<4;j++)

int ans2=gauss(16,16);

if(ans1==-1&&ans2==-1)

else if(ans1==-1&&ans2!=-1)printf("%d\n",ans2);

else if(ans1!=-1&&ans2==-1)printf("%d\n",ans1);

printf("%d\n",min(ans1,ans2));

}return 0;

}

POJ 1753 高斯消元

題意是把所有的字母都變成w或者b的最小步數.跑兩次01方程,取最小如果兩次都無解就輸出無解.板子題 include include include include include using namespace std define maxn 333 define free free define ...

POJ 1753 開關問題 高斯消元法

題目鏈結 題目大意 一堆格仔,或白或白。每次可以把乙個改變乙個格仔顏色,其上下左右四個格仔顏色也改變。問最後使格仔全部白或全部黑,求最小改變的格仔樹。解題思路 與poj 1681 類似。不過這次是或黑或白,要初始化兩次相反的解向量,進行兩次高斯消元,取其中小的值。特殊的是,本題中有自由變元的存在,也...

poj 1753 Flip Game 高斯消元

因為目標狀態是全白或全黑,所以進行兩次高斯消元,每次若有自由變元的話要列舉自由變元求得最優解。哇哦,怎麼就寫了200 行。include include include include include include include include include include include i...