10. 信号无错传输

★★☆   输入文件:dlj.in   输出文件:dlj.out   简单对比
时间限制:1 s   内存限制:128 MB

【问题描述】
为提高传递信息的保密性和可靠性,两个军事基地用几套专用编码传输信号。传递信号过程中,发现某些编码在传递过程中容易混淆,影响了信息传输质量。请你在已有的编码中进行精简,既要保证传输过程中不发生混淆,又要尽量使编码集中可用编码尽量多,请你给出新的编码设计方案。
【输入格式】
输入文件有若干行
第一行,一个整数n,表示该编码规则共有n种信号(2<=n<=100)
下面有n行,每行有n个数字。第p行第q列的数字表示信号p与信号q之间是否可能混淆。数字为1表示有可能混淆,0表示不会混淆。
【输出格式】
输出文件有若干行
第一行,一个整数a,表示精简后的编码规则中有a个信号。
第二行,一个整数b,表示最佳精简方案有b种。
第3--b+2行,每行b个整数,表示一种精简方案。多种方案输出时,输出顺序按信号编号由小到大字典序输出。
【输入文件】

0 1 1 1 0 0 
1 0 0 1 0 0 
1 0 0 1 0 0 
1 1 1 0 1 1 
0 0 0 1 0 1 
0 0 0 1 1 0 
【输出文件】

2
2 3 5 
2 3 6
思路:搜索,然而我并不知道标签的最值子图是神马鬼。具体见代码。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,ans,sum,map[][],v[][],f[][];
int use[];
bool judge(int x){
for(int i=;i<=x;i++) //要保证字典序,不出现重复。
if(map[x][i]&&use[i])
return false;
return true;
}
void dfs(int t,int now){ //搜索到第t个点,当前留下的点的个数为now个。
if(ans-now>n-t+) return ;
if(t>n){
if(now>ans) sum=;
memcpy(v[++sum],use,sizeof(use)); //记录选点的情况。
ans=now;
return ;
}
if(judge(t)&&!use[t]){ //判断一个点是否能被留下。
use[t]=; //如果与这个点相连的点中没有被选中的并且这个点没有入选。
dfs(t+,now+);
use[t]=;
}
dfs(t+,now); //不能被留下,继续找下一个点。
}
int main(){
//freopen("dlj.in","r",stdin);
//freopen("dlj.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++){
int falg=;
for(int j=;j<=n;j++){
scanf("%d",&map[i][j]);
if(map[i][j]) falg=;
}
if(falg==){
use[i]=; //use记录点是否被选中留下。
ans++; //ans记录留下的点的个数。
}
}
dfs(,ans); //从第一个点开始搜索,当前留下的点的个数为ans个。
cout<<ans<<endl<<sum<<endl;
for(int i=;i<=sum;i++){
for(int j=;j<=n;j++)
if(v[i][j])
printf("%d ",j);
cout<<endl;
}
}

cogs 10. 信号无错传输的更多相关文章

  1. 【WCF--初入江湖】10 序列化和传输大型数据流

    10 序列化和传输大型数据流 1.前言 理解WCF的序列化形式 掌握DataContractSerializer序列化对象 比较性能 比较xmlSerializer序列化对象   大数据量传输设置 修 ...

  2. qt多线程信号槽传输方式

    //简单介绍一下QT信号与槽的连接方式:    //Qt::AutoConnection表示系统自动选择相应的连接方式,如果信号与槽在同一线程,就采用Qt::DirectConnection, //如 ...

  3. APUE学习笔记——10信号——信号接口函数 signal 和 sigaction

    signal函数     signal函数是早起Unix系统的信号接口,早期系统中提供不可靠的信号机制.在后来的分支中,部分系统使用原来的不可靠机制定义signal函数,如 Solaris 10 .而 ...

  4. APUE学习笔记——10 信号

    信号的基本概念     信号是软件中断,信号提供了解决异步时间的方法.     每一中信号都有一个名字,信号名以SIG开头. 产生信号的几种方式     很多条件可以产生信号:     终端交互:用户 ...

  5. UNIX环境高级编程--10. 信号

    第十章        信号    信号是软中断,提供了一种处理异步事件的方法.例如,终端用户键入终端键,会通过信号机制停止一个进程,或及早终止管道中的下一个程序.    每个信号都有一个名字,SIG开 ...

  6. 高级UNIX环境编程10 信号

    信号是软件中断,提供一种处理异步事件的方法 <signal.h> sigaction()

  7. 《连载 | 物联网框架ServerSuperIO教程》- 10.持续传输大块数据流的两种方式(如:文件)

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  8. Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platform)

    catalog . 引言 . Windows 2000网络结构和OSI模型 . NDIS驱动 . NDIS微端口驱动编程实例 . NDIS中间层驱动编程实例 . NDIS协议层驱动编程实例 . TDI ...

  9. RFID 基础/分类/编码/调制/传输

    不同频段的RFID产品会有不同的特性,本文详细介绍了无源的感应器在不同工作频率产品的特性以及主要的应用. 目前定义RFID产品的工作频率有低频.高频和甚高频的频率范围内的符合不同标准的不同的产品,而且 ...

随机推荐

  1. Spring:验证用户登录

    利用 Spring IOC 技术实现用户登录的验证机制,对用户进行登录验证. 首先利用 Spring 的自动装配模式将 User 对象注入到控制器中,然后将用户输入的用户名和密码与系统中限定的合法用户 ...

  2. 批量梯度下降(Batch gradient descent) C++

    At each step the weight vector is moved in the direction of the greatest rate of decrease of the err ...

  3. ks shell OpenStack 封装

  4. [SpringMVC]定义多个前缀映射的问题

    转自:https://penciltim.iteye.com/blog/501073 我在web.xml里面定义多个dispatch-servlet的前缀映射,像下面这样 <!-- Servle ...

  5. runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁

    runC 是 Docker,Kubernetes 等依赖容器的应用程序的底层容器运行时.此次爆出的严重安全漏洞可使攻击者以 root 身份在主机上执行任何命令. 容器的安全性一直是容器技术的一个短板. ...

  6. EF6 自定义迁移表名

    在下列代码片段中已经EF6迁移表的表名更改为 MigrationHistory注意:下代码片段建议和DbContext同程序集 public class ModelConfiguration : Db ...

  7. HTML+CSS+JS总结

    ==================HTML(超文本标记语言)========== <!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前.此标签可告 ...

  8. POJ 3635 优先队列BFS

    (感谢lyd学长的幻灯片) 注意vis数组的应用 在vis[i][j]中 i表示到了第i个点 j表示还剩j升油 vis[i][j]表示最小话费. 这样只需搜到话费比它少的更新入堆就OK了 //By: ...

  9. struts2OGNL表达式(三)

    OGNL表达式 OGNL对象试图导航语言.${user.addr.name}这种写法就叫对象试图导航.Struts框架使用OGNL作为默认的表达式语言 OGNL不仅仅可以试图导航,支持比EL表达式更加 ...

  10. jquery学习之$(document).ready()

    参考资料: 1.W3School在线教程:http://www.w3school.com.cn/jquery/event_ready.asp 2.某人博客园:http://www.cnblogs.co ...