Ex 5_28 Alice想要举办一个舞会..._第十次作业

根据总人数建立顶点数量为总人数的无向图,顶点之间有边相连表示两个人相互认识,没有边则表示不认识。对于每一个顶点v,设d(v)表示顶点的度,若d(v)<5,即v认识的人数少于5,则不邀请v,若d(v)>总人数-6,即v认识的人数大于(总人数-6)个,即v不认识的人少于5个,这种情况也不邀请v,给定一个相互配对列表,循环遍历列表,找出不邀请的人,从列表中删除,若找不到删除的人则结束循环,剩下的即为要邀请的人。
package org.xiu68.ch05.ex10;
import java.util.ArrayDeque;
public class Ex5_28 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] guest=new int[13][13];
//0~5之间相互认识,不认识6~11
//6~11之间相互认识,不认识0~5
//12不认识任何一个人
//结果应该邀请除了12之外的所有人
for(int i=0;i<guest.length-1;i++){
if(i<=5){
for(int j=0;j<guest[i].length-1;j++){
if(j<=5 && i!=j)
guest[i][j]=1;
else
guest[i][j]=0;
}
}else{
for(int j=0;j<guest[i].length-1;j++){
if(j>5 && i!=j)
guest[i][j]=1;
else
guest[i][j]=0;
}
}
}//for
maxGuest(guest, 13);
/*运行结果*/
//邀请的客人为:
//0 1 2 3 4 5 6 7 8 9 10 11
}
//guest:客人的相识配对表
//客人总数
public static void maxGuest(int[][] guest,int num){
int invidedNum=num; //记录邀请的人数
boolean[] invided=new boolean[num]; //记录邀请的客人,邀请为true
for(int i=0;i<num;i++)
invided[i]=true;
ArrayDeque<Integer> notInvidedQueue=new ArrayDeque<>(); //记录不邀请的客人
do{
for(int i=0;i<notInvidedQueue.size();i++)
invided[notInvidedQueue.poll()]=false; //将不邀请的客人标记为false
for(int i=0;i<num && invided[i]==true;i++){
int recognizeNum=0; //第i个人相识的人数
for(int j=0;j<num && invided[j]==true;j++){
if(guest[i][j]==1)
recognizeNum++;
}//for2
//如果认识的人数少于5个
//或者如果认识的人数大于(总人数-6)个,即不认识的人少于5个
//则不邀请这个人
if(recognizeNum<5 || recognizeNum>(invidedNum-6)){
notInvidedQueue.add(i);
invidedNum--;
}
}//for1
}while(!notInvidedQueue.isEmpty());
System.out.println("邀请的客人为:");
for(int i=0;i<num;i++){
if(invided[i])
System.out.print(i+" ");
}
System.out.println();
}
}
Ex 5_28 Alice想要举办一个舞会..._第十次作业的更多相关文章
- Ex 5_33 实现一个关于公式长度(其中所有文字总的出现次数)为线性时间的Horn公式可满足性问题_第十次作业
对于所有的蕴含式,生成一张有向图,对于每一个蕴含式,将左边的每一个文字连接到一个中间结点,并用中间结点记录蕴含式左边文字的数量,然后将中间结点连接到蕴含式的右侧结点.例如,对于蕴含式集合 生成的有向图 ...
- 单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网?
单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网? 配一个无线路由器就可以实现,将电脑IP配置成自动获取,找条网线一头插路由LAN口(路由器上有标明 ...
- 假设我的朋友账号分别是v{1,2,3,4,5},且这五人想要共享一个目录,因此应该加入同一个群组,假设这个群组为vbird,且这五个账号的密码均为password.那该如何建置这五个账号?
假设我的朋友账号分别是v{1,2,3,4,5},且这五人想要共享一个目录,因此应该加入同一个群组,假设这个群组为vbird,且这五个账号的密码均为password.那该如何建置这五个账号?#!/bin ...
- 假如想要建设一个能承受500万PV/每天的网站,服务器每秒要处理多少个请求才能应对?
假如想要建设一个能承受500万PV/每天的网站,服务器每秒要处理多少个请求才能应对?如何计算? 1.PV是什么:PV是page view的简写.PV是指页面的访问次数,每打开或刷新一次页面,就算做一个 ...
- 在wpf datagrid中,想要根据一个条件来改变datagrid行的背景颜色
原文:在wpf datagrid中,想要根据一个条件来改变datagrid行的背景颜色 在wpf datagrid中,想要根据一个条件来改变datagrid行的背景颜色 例如根据学生的年龄来修改,年龄 ...
- VMware 克隆linux后找不到eth0(学习hadoop,所以想快速搭建一个集群)
发生情况: 由于在学习hadoop,所以想快速搭建一个集群出来.所以直接在windows操作系统上用VMware安装了CentOS操作系统,配置好hadoop开发环境后,采用克隆功能,直接克 ...
- 宙斯是一个完整的Hadoop的作业平台[转]
https://github.com/alibaba/zeus 宙斯(zeus)是什么 宙斯是一个完整的Hadoop的作业平台从Hadoop任务的调试运行到生产任务的周期调度 宙斯支持任务的整个生命周 ...
- 《Google想出了一个决定人员晋升的算法,然后就没有然后了......》有感
Prasad Setty 是 Google People Analytics 团队的副总裁.7 年前 Google 成立的这支团队的职责是收集和利用数据来支撑公司的管理实践.其使命很简单,即基于数据和 ...
- 突发奇想想学习做一个HTML5小游戏
前言: 最近一期文化馆轮到我分享了,分享了两个,一个是关于童年教科书的回忆,一个是关于免费电子书的.最后我觉得应该会不敌web,只能说是自己在这中间回忆了一下那个只是会学习的年代,那个充满梦想的年代. ...
随机推荐
- Access,MSSQL:随机读取N条记录
今天试着将一个网站使用的mssql转换为Access,但网站首页有一段代码是随机读取n条记录: SQL Server:Select TOP N * From TABLE Order By NewID( ...
- 面板 JPanel,滚动面板 JScrollPane,文本域JTextArea
容器中可以有多个JPanel面板,一个JPanel面板中可以有多个控件. 滚动面板 JScrollPane中只能有一个控件. public class Demo extends JFram ...
- vs widows服务的开发
最近再做一个视频管理系统,发现用户提交时实时转换视频非常慢.于是有了通过建立一个单独的服务.通过服务定时查询数据库,是否有需要转换的视频来解决问题.现把过程记录下来,已供参考 1.新建widows 服 ...
- koa的洋葱圈模型
拿以下这段代码为例: const Koa = require('koa'); const app = new Koa(); // x-response-time app.use(async (ctx, ...
- 学习Git笔记
一.名词解释 1.仓库(Repository) 仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库. 2.收藏(Star) 收藏项目,方便下次查看 3.复制克隆项目(Fork) 该f ...
- JSON与对象的相互转换
json是一种轻量级的数据格式,(本质为字符串) 低版本可以使用json2.js插件来解决.下载地址:https://github.com/douglascrockford/JSON-js JSON语 ...
- 字典(Dictionary)
字典(Dictionary) 字典是一种可变的容器模型,由键值对组成,键和值用冒号分隔,用花括号括起来: d = {key1 : value1, key2 : value} 字典的值可以是任何类型的数 ...
- Vue.js入门系列教程(二)
过滤器:filter 全局过滤器 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- C++:error 1189(转)
在VS 2013中编译程序时出现错误: 错误提示1: error C1189: #error : Building MFC application with /MD[d] (CRT dll versi ...
- JavaScript之JS单线程|事件循环|事件队列|执行栈
本博文基于知乎"JavaScript作用域问题?"一问,而引起了对JavaScript事件循环和单线程等概念与实践上的研究.深入理解. 一.概念 0.关键词:JavaScript单 ...