zoukankan      html  css  js  c++  java
  • Poj1830开关问题,高斯消元

    高斯消元的入门题。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<map>
    #include<vector>
    #include<stdlib.h>
    using namespace std;
    
    int Map[100][100];
    
    int gauss(int equ, int var)
    {
        int k; int col;
        for (k = 0, col = 0; k < equ&&col < var; k++, col++){
            int kk = k;
            for (int i = k + 1; i < equ; i++){
                if (Map[i][col]>Map[kk][col])kk = i;
            }
            if (kk != k){
                for (int j = k; j <= var; j++)
                    swap(Map[k][j], Map[kk][j]);
            }
            if (Map[k][col] == 0){
                k--; continue;
            }
            for (int i = k + 1; i < equ; i++){
                if (Map[i][col]){
                    for (int j = col; j <= var; j++){
                        Map[i][j] ^= Map[k][j];
                    }
                }
            }
        }
        for (int i = k; i < equ; i++){
            if (Map[i][col]) return -1;
        }
        return col - k;
    }
    int main()
    {
        int k; int n;
        int a[100], b[100];
        int c; int d;
        cin >> k;
        while (k--){
            cin >> n;
            memset(Map, 0, sizeof(Map));
            for (int i = 0; i < n; i++)
                scanf("%d", &a[i]);
            for (int i = 0; i < n; i++)
                scanf("%d", &b[i]);
            for (int i = 0; i < n; i++)
                a[i] = (a[i] ^ b[i]);
            for (int i = 0; i < n; i++)
                Map[i][n] = a[i];
            for(int i =0;i<n;i++)
                Map[i][i] = 1;
            while (cin >> c >> d, c || d){
                c--;d--;
                Map[d][c] = 1;
            }
            int ans = 1;
            int t = gauss(n, n);
            if(t==-1){
                cout<<"Oh,it's impossible~!!"<<endl;
                continue;
            }
            for (int i = 0; i < t; i++)
                ans *= 2;
            cout << ans << endl;
        }
        return 0;
    }
  • 相关阅读:
    Java_File类
    Java_Math类和Random类
    Java_包装类
    Java_Stringbuilder和StringBuffer
    Java_String
    Java_数组, 懒得整理了 ---------------------> 未完, 待续
    Java_内部类
    Java_三大特征相关
    Java_垃圾回收机制(未掌握)
    重载(overload)和重写(override)的区别?
  • 原文地址:https://www.cnblogs.com/yigexigua/p/4072692.html
Copyright © 2011-2022 走看看