poj2531
来源:互联网 发布:淘宝开店 知乎 编辑:程序博客网 时间:2024/06/05 19:46
涉及算法:dfs
题目大意:网络中有n台电脑,给出一个矩阵C表示电脑两两间通信需要的流量,例如C[i][j]=70表示电脑i和电脑j通信需要的流量为70,现在将电脑分成两个集合,只有在不能集合中的电脑才需要通信,相同集合中的电脑不需要通信,问:最大的通信流量是多少。
题目分析:将电脑分为两个集合:集合0和集合1,每台电脑用两种选择,要么加入集合1要么加入集合2,这显然是一个双入口的dfs
代码如下:
题目大意:网络中有n台电脑,给出一个矩阵C表示电脑两两间通信需要的流量,例如C[i][j]=70表示电脑i和电脑j通信需要的流量为70,现在将电脑分成两个集合,只有在不能集合中的电脑才需要通信,相同集合中的电脑不需要通信,问:最大的通信流量是多少。
题目分析:将电脑分为两个集合:集合0和集合1,每台电脑用两种选择,要么加入集合1要么加入集合2,这显然是一个双入口的dfs
代码如下:
package com.solo.in;import java.util.Scanner;public class Main_2531_1{static int n;static int c[][];public static void main(String[] args){Scanner in=new Scanner(System.in);n=in.nextInt();set=new int[n];c=new int[n][n];sum=0;max=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){c[i][j]=in.nextInt();}}dfs(0,0);System.out.println(max);}static int set[];static int sum;static int max;/*如用1耗时7000+,用2耗时1000+*/static void dfs(int id,int sum){if(id==n){/*1*///sum=0;//for(int i=0;i<n;i++)//{//for(int j=0;j<n;j++)//{//if(set[i]==0 && set[j]==1)//{//sum+=c[i][j];//}//}//}//if(sum>max)//{//max=sum;//}if(sum>max){max=sum;}return;}for(int i=1;i>=0;i--){/*2*/int tmp=sum;if(i==1){for(int j=0;j<n;j++){if(set[j]==1){tmp-=c[id][j];}else {tmp+=c[id][j];}}}/**/set[id]=i;dfs(id+1,tmp);}}}
0 0
- poj2531
- POJ2531
- poj2531
- POJ2531
- poj2531
- poj2531
- poj2531
- poj2531
- POJ2531
- POJ2531
- POJ2531
- poj2531
- poj2531 暴搜
- poj2531 深搜
- poj2531 对称性剪枝
- poj2531 Network Saboteur
- POJ2531--Network Saboteur
- POJ2531:Network Saboteur
- android 上传文件到服务器代码实例
- TcpClient使用http代理访问外网方法
- ApacheCXF-webservice
- 谢谢CSDN让我的BLOG可以重新使用了
- 413 Request Entity Too Large错误解决办法
- poj2531
- spyder使用教程
- JS中的!=、== 、!==、===的用法和区别。
- Error:(1, 0) Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRID
- PAT_Basic 1014
- 动态规划-数字三角形
- 113.Examine the structure of the ORDERS table:
- RecyclerView实现下拉刷新和上拉加载更多
- logstash+es+kibana+redis搭建