- 2
- 0
- 约6.6千字
- 约 52页
- 2018-01-30 发布于浙江
- 举报
程序设计实习(II):算法设计 14_枚举
程序设计实习(II):算法设计第二讲 枚举;内容提要;枚举;枚举的思想:猜测;5;中国古代的枚举问题;POJ1222 熄灯问题;在下图中,左边矩阵中用X标记的按钮表示被按下,右边的矩阵表示灯状态的改变。;输入:
第一行是一个正整数N,表示需要解决的案例数。每个案例由5行组成,每一行包括6个数字。这些数字以空格隔开,可以是0或1。0表示灯的初始状态是熄灭的,1表示灯的初始状态是点亮的。
输出:
对每个案例,首先输出一行,输出字符串“PUZZLE #m”,其中m是该案例的序号。
接着按照该案例的输入格式输出5行,其中的1表示需要把对应的按钮按下,0则表示不需要按对应的按钮。每个数字以一个空格隔开。;样例输入
2
0 1 1 0 1 0
1 0 0 1 1 1
0 0 1 0 0 1
1 0 0 1 0 1
0 1 1 1 0 0
0 0 1 0 1 0
1 0 1 0 1 1
0 0 1 0 1 1
1 0 1 1 0 0
0 1 0 1 0 0 ;解题思路(1);解题思路(2);解题思路(3);解题思路(4);具体实现; anSwitch[0]里放着第1行开关的状态,如何进行枚举呢?
可以使用六重循环:
for( int a0 = 0; a0 2; a0 ++ )
for( int a1 = 0; a1 2; a0 ++ )
for( int a2 = 0; a2 2; a0 ++ )
for( int a3 = 0; a3 2; a0 ++ )
for( int a4 = 0; a4 2; a0 ++ )
for( int a5 = 0; a5 2; a0 ++ ) {
anSwitch[0][0] = a0; anSwitch[0][1] = a1;
anSwitch[0][2] = a2; ……
};17;18;程序代码;void enumate()
{
int c;
bool success;
for ( c=1; c7; c++)
press[1][c] = 0;
while(guess()==false){
press[1][1]++;
c = 1;
while ( press[1][c] 1 ) {
press[1][c] = 0;
c++;
press[1][c]++;
}
}
return;
};int main() {
int cases, i, r, c;
scanf(%d, cases);
for ( r=0; r6; r++ )
press[r][0] = press[r][7] = 0;
for ( c=1; r7; r++ )
press[0][c] = 0;
for (i=0; icases; i++){
for(r=1; r6; r++)
for(c=1; c7; c++)
scanf(%d, puzzle[r][c]);
enumate();
printf(PUZZLE #%d\n, i+1);
for(r=1;r6;r++){
for(c=1;c7;c++)
printf(%d ,press[r][c]);
printf(\n);
}
}
return 0;
};22;实现方案二;定义一个通用的枚举类;要写一个从二进制数到状态的转换函数:
void SwitchStatus( int n);
该函数将整数n( 0 =n64)的二进制表示形式对应到数组pSwitch里去
( anSwitch[0][i] 对应第i位)
template class T, int varRow, int varCol
void CLightT, varRow, varCol::SwitchStatus( int n){
for(int i = 0;i varCol ;i ++ )
pSwitch[0][i] = (n i ) 1;
};推测验证过程;template class T, int varRow, int varCol
void CLightT, varRow, varCol::ApplySwitch( int ncurRaw) {
for( int i = 0;i varCol; i++ ) { //依次让每个开关起作用
if( pSwitch[ncurRaw][i] ) {
//开关左边的灯改变状态
if( i 0 )
pLights[ncurRaw][i-1]
您可能关注的文档
最近下载
- 常州大学《大学英语一》2024-----2025学年期末试卷(A卷).pdf VIP
- 艾米克变频器AMK3100中文说明书使用手册.pdf
- 必背古诗词75首(可打印) .pdf VIP
- 某知名汽车维修企业员工手册范本.docx VIP
- 2025年二建水利b证考试真题及答案.docx
- 安全驾驶教育培训课件.ppt VIP
- 汽车维修车间员工职责手册.docx VIP
- 黑龙江省哈尔滨市第三中学校2025-2026学年高二上学期9月月考物理试卷.docx VIP
- 初中语文名著导读--《骆驼祥子》知识点总结归纳.docx VIP
- 实施指南(2025)《DAT 22-2015 归档文件整理规则》.pptx VIP
原创力文档

文档评论(0)