java课堂练习之可变參数与卫条件
/*
有人邀请A,B,C,D,E,F 6个人參加一项会议,这6个人有些奇怪。由于他们有非常多要求,已知:
1)A,B两人至少有1人參加会议;
2)A,E,F 3人中有2人參加会议。
3)B和C两人一致决定,要么两人都去,要么两人都不去;
4)A,D两人中仅仅1人參加会议。
5)C,D两人中也仅仅要1人參加会议;
6)假设D不去,那么E也决定不去。
那么最后到底有哪几个人參加了会议呢?
*/
可变參数必须位于最后一项。
当可变參数个数多于一个时。必将有一个不是最后一项。所以仅仅支持有一个可变參数。
可变參数的书写形式如:
void a(boolean a,int ...args){ 方法体 }
1)必须是三点;
2)... 位于变量类型和变量名之间,前后有无空格都能够。
3)可变參数的应用实际上是java虚拟机动态的开了一个数组;
4)三点后不能再加其它东西。
package cn.hncu.p37.meeting;
public class Meeting1 {
public static void main(String[] args) {
for (int a1 = 1; a1 <= 2; a1++) {
for (int a2 = 1; a2 <= 2; a2++) {
for (int a3 = 1; a3 <= 2; a3++) {
for (int a4 = 1; a4 <= 2; a4++) {
for (int a5 = 1; a5 <= 2; a5++) {
for (int a6 = 1; a6 <= 2; a6++) {
if (ok(a1, a2, a3, a4, a5, a6)) {
System.out.println("a1--"+a1+
"\na2--"+a2+
"\na3--"+a3+
"\na4--"+a4+
"\na5--"+a5+
"\na6--"+a6
);
break;
}
}
}
}
}
}
}
//相似上面6个for
//for (int i = 0; i <= 63; i++) {//二进制表示六个人( 000000 ~ 111111 )去还是不去 1表示去 ,0表示不去
//a = ((i & 1) == 0) ? 0 : 1;
//b = ((i & 2) == 0) ?
0 : 1;
//c = ((i & 4) == 0) ? 0 : 1;
// d = ((i & 8) == 0) ? 0 : 1;
//e = ((i & 16) == 0) ? 0 : 1;
// f = ((i & 32) == 0) ? 0 : 1;
//if (fun(a, b, c, d, e, f)) {
// System.out.println("a= " + a + " b= " + b + " c= " + c + " d= "
// + d + " e= " + e + " f= " + f);
//}
//}
}
private static boolean ok(int a1, int a2, int a3, int a4, int a5, int a6) {
if (!(countGo(a1, a2) >= 1)) {// A,B两人至少有1人參加会议。
return false;
}
if (!(countGo(a1, a5, a6) == 2)) {// A,E,F 3人中有2人參加会议;
return false;
}
if (!(countGo(a2, a3) == 2 || countGo(a2, a3) == 0)) {// B和C两人一致决定,要么两人都去,要么两人都不去;
return false;
}
if (!(countGo(a1, a4) == 1)) {// A,D两人中仅仅1人參加会议。
return false;
}
if (!(countGo(a3, a4) == 1)) {// C,D两人中也仅仅要1人參加会议;
return false;
}
if (countGo(a4) == 0 && countGo(a5) == 1) {// 假设D不去,那么E也决定不去。
return false;
}
return true;
}
private static int countGo(int... mee) {
int count = 0;
for (int me : mee) {
if (me == 1) {
count++;
}
}
return count;
}
}
java课堂练习之可变參数与卫条件的更多相关文章
- java之 ------ 可变參数和卫条件
可变參数:适用于參数个数不确定.类型确定的情况,java把可变參数当做数组处理. 可变參数必须位于最后一项.当可变參数个数多于一个时,必将有一个不是最后一项,所以仅仅支持有一个可变參数. 可变參数的书 ...
- java 可变參数列表
Java SE5加入了可变參数列表特性 參数能够这样定义.(Object-args).可变參数用"..."来定义,args是可变參数的数组.举个样例: package sample ...
- java 可变參数
我们在某些特定的需求环境下,可能要对某一个方法中的參数进行一些操作,并且这些方法中的參数是不规定的,那么问题来了,我们该怎么办呢? java事实上就为我们考虑了这样的情况,那就是使用可变參数 可变參数 ...
- OC可变參数的函数实现va_start、va_end、va_list的使用
一.简单介绍 我们常常在编程的时候看见类似这种代码,如图1.1 图1.1 或者是这种可变參数,如图1.2 图1.2 二.基本知识介绍 在学习怎样写这样的格式的函数前,先简介几个经常使用的宏: 下面摘自 ...
- iOS 处理方法中的可变參数
## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录 ...
- Effective JavaScript Item 21 使用apply方法调用函数以传入可变參数列表
本系列作为Effective JavaScript的读书笔记. 以下是一个拥有可变參数列表的方法的典型样例: average(1, 2, 3); // 2 average(1); // 1 avera ...
- C语言利用va_list、va_start、va_end、va_arg宏定义可变參数的函数
在定义可变參数的函数之前,先来理解一下函数參数的传递原理: 1.函数參数是以栈这样的数据结构来存取的,在函数參数列表中,从右至左依次入栈. 2.參数的内存存放格式:參数的内存地址存放在内存的堆栈段中, ...
- 增强for循环、Map接口遍历、可变參数方法
增强for循环 1.for循环能做得事情.增强for循环大部分都能做(假设要想获得下标的时候就必须使用简单for循环了) 2.增强for有时候可以方便的处理集合遍历的问题,可是集合的标准遍历是使用迭代 ...
- Printf可变參数使用
參考文档: http://bbs.csdn.net/topics/70288067 Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源 本文的二 ...
随机推荐
- initWithSpriteFrameName和createWithSpriteFrameName
/** * Initializes a sprite with a sprite frame name. <br/> * A cc.SpriteFrame will be fetched ...
- Shell脚本文件中常用的操作语句
1. 清空文件中的内容 cat /dev/null >> /var/log/messages 2. 脚本中判断用户是不是root用户 ROOT_UID = 0 # ...
- 如何用 redis 造一把分布式锁
基本概念 锁 wiki:In computer science, a lock or mutex (from mutual exclusion) is a synchronization mechan ...
- java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
http://blog.csdn.net/chenghui0317/article/details/9531171 —————————————————————————————————————————— ...
- HDU 5458 Stability (树链剖分+并查集+set)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5458 给你n个点,m条边,q个操作,操作1是删边,操作2是问u到v之间的割边有多少条. 这题要倒着做才 ...
- HDU 3920Clear All of Them I(状压DP)
HDU 3920 Clear All of Them I 题目是说有2n个敌人,现在可以发n枚炮弹,每枚炮弹可以(可以且仅可以)打两个敌人,每一枚炮弹的花费等于它所行进的距离,现在要消灭所有的敌人 ...
- HDU 4496 D-City (并查集)
题意:给定一个图,问你每次删除一条边后有几个连通块. 析:水题,就是并查集的运用,倒着推. 代码如下: #include <cstdio> #include <string> ...
- 正确理解ContentPresenter
下图显示继承关系: ContentControl:Control (在Control類並沒有Content屬性, 所以在這之上再寫了一個ContentControl, 使控件有Content屬性可以顯 ...
- SVN安装与使用
来自:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html SVN服务器搭建和使用(一) Subversion是优秀的版 ...
- 在js中使用createElement创建HTML对象和元素
1.创建链接 <script language="javascript"> var o = document.body; //创建链接 function createA ...