程序设计实习第五讲枚举内容摘要:
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。 …… } //如果每行灯很多,或每行开关数目是可变数 N那怎么办 ? 适用于一行有 N个开关的办法 : 一个 6位二进制数的所有取值正好是 64种, 让该数的每一位对应于 anSwitch[0]里的一个元素 ( anSwitch[0][5] 对应最高位, anSwitch[0][4]对应次高位 ….. ) ,那么这个二进制数的每个取值正好表示了第一行开关的一种状态。 (如果一行有 N个开关,那么就用一个 N位二进制数) 比如, 0 的二进制表示形式是 00 0000,即代表所有开关都不按下 63 的二进制表示形式是 11 1111,即代表所有开关都按下 5 的二进制表示形式是 00 00101,即代表右数第 1, 3个开关按下 要写一个从二进制数到状态的转换函数: void SwitchStatus( int n, int * pSwitchLine)。 该函数将整数 n( 0 =n64)的二进制表示形式对应到数组pSwitchLine里去 ( pSwitchLIne [i] 对应第 i位 ) void SwitchStatus( int n, int * pSwitch) { for( i = 0。 i 6。 i ++ ) pSwitch[i] = (n i ) amp。 1。 } 要写一个让开关起作用的函数 void ApplySwitch( int * pLights, int * pNextLights, int * pSwitchs)。 pSwitchs 表示一行开关的状态 pLights 表示与开关同一行的灯的状态 pNextLights表示开关起作用后下一行的灯的状态 本函数根据 pSwitchs 所代表的开关状态,计算这行开关起作用后, pLights行和 pNextLights行的灯的状态 不考虑开关的上一行的灯,是因为设定 pSwitchs的值的时候,已经确保会使得上一行的灯变成全灭(或没有上一行) void ApplySwitch( int * pLights, int * pNextLights, int * pSwitchs) { for( int i = 0。 i 6。 i ++ ) { //依次让每个开关起作用 if( pSwitchs[i] ) {//第 i个开关按下 //开关左边的灯改变状态 if( i 0 ) pLights[i1] = 1 pLights[i1]。 //开关所在位置的灯改变状态 pLights[i] = 1 pLights[i]。 //开关右边的灯改变状态 if( i 5) pLights[i+1] = 1 pLights[i+1]。 //开关下边的灯改变状态 pNextLights[i] = 1 pNextLights[i]。 } } } include include include iostream using namespace std。 int T。 int anPuzzle[6][6]。 int anOriPuzzle[6][6]。 int anSwitch[6][6]。 //开关状态 int i,j。 void OutputResult(int t) //输出结果 { cout PUZZLE t endl。 for( int i = 0。 i 5。 i ++ ) { for( int j = 0。 j 6。 j ++ ) { cout anSwitch[i][j]。 if( j 5 ) cout。 } cout endl。 } } int main() { cin T。 for( int t = 0。 t T。 t ++ ) { for( i = 0。 i 5。 i ++ ) for( j = 0。 j 6。 j ++ ) cin anOriPuzzle[i][j]。 for( int n = 0。 n 64。 n ++ ) { //遍历首行开关的 64种状态 memcpy( anPuzzle,anOriPuzzle,sizeof(anPuzzle))。 //算出 n所代表的开关状态,放到 anSwitch[0] SwitchStatus( n, anSwitch[0])。 //下面逐行让开关起作用,并算出下一行开关应该是什么状态,再让它们起作用 …… for( int k = 0。 k 5。 k ++ ) { //算出第 k行开关起作用后的结果 ApplySwitch( anPuzzle[k], anPuzzle[k+1],anSwitch[k])。 //第 k+1行的开关状态应和第 k行的灯状态一致 memcpy( anSwitch[k+1], anPuzzle[k],sizeof(anPuzzle[k]))。程序设计实习第五讲枚举
本资源仅提供20页预览,下载后可查看全文
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。
相关推荐
移动数字融合在上海的发展现状和趋势
国 3G标准 TDSCDMA的手机电视标准 TDBM DAB实时交通信息广播 基于车载信息系统的融合 上汽集团车载信息系统
程度型选择题也叫最佳选择题,其结构是几个备选项与题干之
要掌握好选择最佳选项的方法。 由于程度型选择题的结构特点是几个备选项与题干之间都有不同程度的内在联系,要按题目的要求对几个备选项进行分析比较,比较时要鉴别谁主谁次、谁轻谁重、谁大谁小,只有区分好它们之间的程度关系,才能排除干扰项,得出正确答案。 [示例 ] (2020 潮州模拟 )1825年英国 空想社会主义者欧文在美国印第安 纳州创立 “ 新和谐公社 ” ,试图把 公社建成为一个没有剥削
程序化交易基本理念与原则20xx年6月
场参与者博弈的结果,因而符合先验架构。 1 8 “三缺一 ”?你还玩什么 ? 流动性,直接影响交易策略的有效性。 在流动性差的市场上,类似于做市商的交易策略会产生正绩效;在流动性强的市场上,追逐波动的趋势交易策略,才能拥有足够的市场容量,相应的保值商也才能拥有风险转移的对手盘。 1 9 规模效应 真正的量价关系,不是价升量增或价跌量缩,而是成交量与持仓量的多寡,反映了多空双方战役规模的大小。