如何利用一个变量来达到多重循环的效果?
2009-08-08 11:40
288 查看
1)二重循环
for(int i=0;i<2;i++) 可等价为: var=2*3;
for(int j=0;j<3;j++) while(var--)
在这个二重循环中,总共有2*3种情况,故我们设定变量var=2*3.对于整数,var=(var/2)*2+var%2,在i从6到0的变换过程中,var/2在0到2之间变化,var%2在0和1之间变化,且(var%2,var/2)是唯一的,故可以用(var%2,var/2)表示二元组(i,j)。
2)三重循环
for(int i=0;i<2;i++)
for(int j=0;j<3;j++) 可等价为:var=2*3*4;
for(int k=0;k<4;k++) while(var--)
var=(var/2)*2+var%2, var/2=((var/2)/3)*3+(var/2)%3,故可用(var%2,var/2%3,var/(2*3))表示三元组(i,j,k)。
3)四重循环
for(int i=0;i<2;i++) 可等价为:var=2*3*4*5
for(int j=0;j<3;j++) while(var--)
for(int k=0;k<4;k++)
for(int m=0;m<5;m++)
在循环体内,可用 var%2表示i var/2%3表示j var/(2*3)%4表示k var/(2*3*4)表示m.
for(int i=0;i<2;i++) 可等价为: var=2*3;
for(int j=0;j<3;j++) while(var--)
在这个二重循环中,总共有2*3种情况,故我们设定变量var=2*3.对于整数,var=(var/2)*2+var%2,在i从6到0的变换过程中,var/2在0到2之间变化,var%2在0和1之间变化,且(var%2,var/2)是唯一的,故可以用(var%2,var/2)表示二元组(i,j)。
2)三重循环
for(int i=0;i<2;i++)
for(int j=0;j<3;j++) 可等价为:var=2*3*4;
for(int k=0;k<4;k++) while(var--)
var=(var/2)*2+var%2, var/2=((var/2)/3)*3+(var/2)%3,故可用(var%2,var/2%3,var/(2*3))表示三元组(i,j,k)。
3)四重循环
for(int i=0;i<2;i++) 可等价为:var=2*3*4*5
for(int j=0;j<3;j++) while(var--)
for(int k=0;k<4;k++)
for(int m=0;m<5;m++)
在循环体内,可用 var%2表示i var/2%3表示j var/(2*3)%4表示k var/(2*3*4)表示m.
相关文章推荐
- 如何不利用一个额外的变量来达到交换两个变量值的目的-------位上的异或运算
- 如何不利用一个额外的变量来达到交换两个变量值的目的-------位上的异或运算
- 如何不利用一个额外的变量来达到交换两个变量值的目的-------位上的异或运算
- 如何利用3个月在一个陌生领域达到优秀水平?
- 如何在已有网站的服务器上面,通过nginx配置虚拟主机来达到多个应用使用同一个服务器的效果
- (1.5.1.2)编程之美:中国象棋将帅问题——一个变量实现多重循环
- ExtJS学习--如何新建一个窗口并达到遮罩住整个页面的效果
- 使用逻辑数据库PCH的时候,如何实现一次只能选择一个OBJID的效果?
- Android学习 - 小知识(读取一个已经安装的包的权限与两个Activity跳转的时,如何自定义翻页效果)
- 如何利用Linux系统做一个NFS服务器
- 利用PreLoader实现一个平视显示(HUD)效果(可以运用到加载等待效果),并进行简单的讲解
- 求如何利用struts2从本地解析一个cvs文件并显示在页面上
- C/C++中如何判断一个输入的变量是否和其定义的类型一致
- 如何将hive的执行结果返回给一个变量
- Android 利用GridView来实现一个底部标签页的效果
- 如何利用搜索引擎的消噪技术提升SEO效果
- 如何利用微信公众平台达到品牌营销,网络推广三大关键
- 【iOS 技巧- 4 】如何利用xib封装一个view
- 如何利用技术提升微信营销效果