參考了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...