博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数学 --- 高斯消元 POJ 1830
阅读量:7080 次
发布时间:2019-06-28

本文共 1279 字,大约阅读时间需要 4 分钟。

开关问题 

Problem's Link: 


 

Mean: 

analyse:

增广矩阵:con[i][j]:若操作j,i的状态改变则con[i][j]=1,否则con[i][j]=0。

最后的增广矩阵应该是N*(N+1),最后一列:对比开光的始末状态,若相同则为0,若不同则为1;

 

最后的解共有三种:

1.无解,既出现了一行中前面N个数为0,第N+1的值非0;
2.没有第1种情况出现,存在X行数值全为0,则解的个数为2^X;
3,没有1,2 两种情况出现,唯一解,输出1。

Time complexity: O(n)

 

Source code: 

 

/** this code is made by crazyacking* Verdict: Accepted* Submission Date: 2015-06-17-22.36* Time: 0MS* Memory: 137KB*/#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define ULL unsigned long longusing namespace std;const int p=30;int con[p][p];int N;int beg[p],fin[p];int function(){ int i,j,k,t,row,col,temp,count=0; for(row=col=1; row<=N&&col<=N; row++,col++) { if(con[row][col]==0) { for(i=row+1; i<=N; i++) { if(con[i][col]!=0) { for(j=1; j<=N+1; j++) { swap(con[row][j],con[i][j]); } break; } } } if(con[row][col]==0) { row--; continue; } for(k=1; k<=N; k++) { if(con[k][col]!=0&&k!=row) { temp=-(con[k][col]/con[row][col]); for(t=col; t<=N+1; t++) { con[k][t]=(temp*con[row][t])+con[k][t]; } } } } for(k=row; k
View Code

 

转载于:https://www.cnblogs.com/crazyacking/p/4584545.html

你可能感兴趣的文章
2017.07 数字货币--区块链常识
查看>>
input输入框禁止显示历史记录
查看>>
JAVA并发,CyclicBarrier
查看>>
LeetCode 638: Shopping Offers
查看>>
ubuntu mysql workbench
查看>>
poj3164 (朱刘算法 最小树形图)
查看>>
javascript中的作用域
查看>>
vs2015智能提示英文改为中文
查看>>
synchronized(){}同步代码块笔记(新手笔记,欢迎纠正)
查看>>
Shell基础
查看>>
JavaSe实现List存对象类型并增删改查
查看>>
hdu Problem 2063 过山车
查看>>
C++11新利器
查看>>
vSphere 安装操作系统
查看>>
c++由string组成的struct初始化崩溃
查看>>
ArrayList与LindedList区别
查看>>
Javascript中最常用的经典技巧
查看>>
Asp.Net知识点
查看>>
Yii中事件触发机制
查看>>
给linux系统添加系统调用
查看>>