京东笔试题
6*6的棋盘,每一个方格内有一个正整数,只能向下或者向右,问从左上角到右下角的路径,求最大正整数和,和百度的题及其相似
#include<iostream>
using namespace std;
int a[6][6],book[6][6];
int totalPrice=0;
int tmp=0;
void findNext(int x,int y){
int next[2][2] = {{1,0},{0,1}};
int tx,ty;
totalPrice+=a[x][y];
if( x==5 && y==5) {
if(totalPrice>tmp)
tmp = totalPrice;
return;
}
for(int k=0;k<2;++k){
tx = x+next[k][0];
ty = y+next[k][1];
if(tx<0||tx>5||ty<0||ty>5)continue;
if(book[tx][ty]==0){
book[tx][ty]=1;
findNext(tx,ty);
totalPrice-=a[tx][ty];//回退回来,要记得减去后一个格子里的值
book[tx][ty]=0;
}
}
return ;
}
int main(){
int startx = 0,starty =0;
for(int i=0;i<6;++i){
for(int j=0;j<6;++j){
cin>>a[i][j];
}
}
book[startx][starty]=1;
findNext(startx,starty);
cout<<tmp;
system("pause");
return 0;
}