Heim  >  Artikel  >  Datenbank  >  Google2015校园招聘在线笔试题2

Google2015校园招聘在线笔试题2

WBOY
WBOYOriginal
2016-06-07 15:49:391046Durchsuche

下午去打了个酱油,就做出一道最简单的题,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>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn