求类似2048移动的算法
看到2048这个游戏,感觉挺有兴趣,想自己做一个。但是在算法上遇到了问题。
比如int a[4] ={2,0,2,0};
往右移动的时候,变成{0,0,0,4} 其中每个数移动的长度为{3,0,1,0}(数值0不需要移动)
比如int a[4] ={2,2,2,0};
往右移动的时候,变成{0,0,2,4} 其中每个数移动的长度为{2,2,1,0}(数值0不需要移动)
比如int a[4] ={2,4,2,0};
往右移动的时候,变成{0,2,4,2} 其中每个数移动的长度为{1,1,1,0}(数值0不需要移动)
比如int a[4] ={4,2,2,0};
往右移动的时候,变成{0,0,4,4} 其中每个数移动的长度为{2,2,1,0}(数值0不需要移动)
规则就是 如果往右边移动,那从最右边开始,两个相邻的非0数据(中间的0可以忽略)如果相等,那就相加这2个数并且合并在一起。不相等就往右边直接移动。
我现在想得到2个结果,第一个是 这个数组移动后的结果,第二个是每个数移动的长度,自己写了2天了,还是没写对。
C语言,希望大家能帮下,谢谢!!!!!