Home  >  Article  >  Database  >  Google2015校园招聘在线笔试题2

Google2015校园招聘在线笔试题2

WBOY
WBOYOriginal
2016-06-07 15:49:391067browse

下午去打了个酱油,就做出一道最简单的题,2048游戏,实在是太菜了,马上要找工作了,复习的不到位啊! 解法: k记录要被放置的位置索引 1.k位置元素是0,将e[i]移到e[k] 2.k位置非零: (1)e[i]==e[k]相同,碰撞,e[k]×=2,k移到下一个位置(k或--k) (2

下午去打了个酱油,就做出一道最简单的题,2048游戏,实在是太菜了,马上要找工作了,复习的不到位啊!


解法:

k记录要被放置的位置索引
1.k位置元素是0,将e[i]移到e[k]
2.k位置非零:
  (1)e[i]==e[k]相同,碰撞,e[k]×=2,k移到下一个位置(++k或--k)
  (2)e[i]!=e[k]不同,k移到下一个位置(++k或--k),将e[i]移到e[k]

复杂度O(n^2),代码有点乱,没整理,如下:

#include <iostream>
#include <string>
inline void arrayMove(short (*val)[21],int n,std::string&dir){
	if(dir=="up"){
		for(int j=0;j<n int k="0;" for i="1;i<=n-1;++i){" if continue val j="0;j<n;++j){">=0;--i){
				if(0==val[i][j])
					continue;
				if(0==val[k][j]){
					val[k][j]=val[i][j];
					val[i][j]=0;
				}else if(val[i][j]==val[k][j]){
					val[k][j]=val[i][j]=0;--j){
				if(0==val[i][j])
					continue;
				if(0==val[i][k]){
					val[i][k]=val[i][j];
					val[i][j]=0;
				}else if(val[i][j]==val[i][k]){
					val[i][k]=val[i][j]>T;
	while(++i>N;
		std::cin>>dir;
		for(int j=0;j<n for k="0;k<N;++k)" std::cin>>val[j][k];
		
		arrayMove(val,N,dir);
		std::cout<br>
<br>



</n></n></string></iostream>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn