POJ 2345 Central heating 高斯消元
2016-07-18 09:03
357 查看
n个人n个开关,每个人可以开或者关一些开关,选出一部分人,使得所有的开关都是开的。
package fd; import java.util.Scanner; public class Main { static void rank(int[][] A, int m, int n) { int i = 0, j = 0, k, r, u; while(i < m && j < n) { r = i; for(k = i; k < m; k++) if(A[k][j] == 1) { r = k; break; } if(A[r][j] == 1) { if(r != i) for(k = 0; k <= n; k++) { int tmp = A[r][k]; A[r][k] = A[i][k]; A[i][k] = tmp; } for(u = i+1; u < m; u++) if(A[u][j] == 1) for(k = i; k <= n; k++) A[u][k] ^= A[i][k]; i++; } j++; } for(i = m-1; i >= 0; i--) { for(j = i-1; j >=0; j--) { A[j] ^= (A[i] &A[j][i]); } } int tmp = 0; for(i = 0; i < m; i++) { if(A[i] == 1) { if(tmp++ > 0) { System.out.print(" "); } System.out.print(i+1); } } if(tmp == 0) { System.out.print("No solution"); } System.out.println(); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] a = new int[n+1][n+2]; for(int i = 0; i < n; i++) { int t; while(sc.hasNext()) { t = sc.nextInt(); if(t == -1) { break; } a[t-1][i] = 1; } a[i] = 1; } rank(a, n, n); } }
相关文章推荐
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
- POJ 1011 Sticks DFS+剪枝
- POJ 3537 Crosses and Crosses SG函数
- POJ 2082 Terrible Sets 单调栈
- POJ 3169 Layout 差分约束
- POJ 1742 Coins 多重背包
- POJ 1284 Primitive Roots 原根
- 调整数组顺序使奇数位于偶数前面 java
- Java DES加密
- 虽然每天都是自己一个人做饭菜
- 自定义组合控件
- 克隆已有节点
- Android WebView使用
- ListView中获取系统联系人
- Redis的pub/Sub(订阅与发布)在java中的实践
- java/设计原则
- overload(重载) override(覆盖) overwrite(重写)
- 8086汇编语言自学经验分享 U命令查看指定内存处内容翻译成的指令
- 8086汇编语言自学经验分享 T命令执行CS:IP所指内存的指令
- Linux文件属性及操作