关于全局变量和局部变量的问题,非常奇怪的问题
今天做hdu acmstep 的2.2.2题目时,地址在http://acm.hdu.edu.cn/showproblem.php?pid=1443
题目意思是2*k个人进行约瑟夫环游戏,1,2,3,....2*k,要求输出最小的m,使得k到2*k的人先于输出。
我的代码在http://codepad.org/3YC0CR3z
主要是枚举m,然后符合要求就保存在vis数组,算法我认为没什么大问题,只是那个vis数组设置为全局变量和局部变量有很大不同。
那段代码在vc6运行的情况是http://hi.baidu.com/a2659633/album/item/edf8e76034a85edfd03bfe8749540923dc54752c.html
在codeblock运行的情况时http://hi.baidu.com/a2659633/album/item/8c9ded4e9258d109d654a916d158ccbf6d814d2c.html
在http://codepad.org/3YC0CR3z运行的结果是http://hi.baidu.com/a2659633/album/item/3d483b0a19d8bc3edcbf066e828ba61ea9d3452c.html
第三个的结果正是我想要的。而造成三个不同结果的原因是vis为全局变量。
当我把vis数组设置为局部变量时,三个的结果又一样了。
这是为什么?我查了其他资料都找不到原因,求教各位啊,非常感谢!!
[解决办法]
楼主数组大小开小了吧,下面这代码 k>10时,n就大于20了。。
for(k=1;k<14;k++) { n=2*k; init(n);