davidpeterman_c.cpp

来自「问题描述: 虽然离开浦口了」· C++ 代码 · 共 86 行

CPP
86 行
字号
#include<fstream.h>
int maxr=0,maxc=0,length=0,l=0;
void max(int *num,int r=5,int c=5){
	int m=0;
	for(int i=0;i<r;i++){
		for(int j=0;j<c;j++){
			if(num[i*c+j]>=m){
				maxr=i;
				maxc=j;
				m=num[i*c+j];
			}
		}
	}
}
void way(int x,int y,int r,int c,int *num){
	l++;
	if(y-1>=0){//x,y-1
 		if(num[x*c+y]>=num[x*c+y-1]){
			if(num[x*c+y-1]==1){
				l++;
				if(l>length)length=l;
				l--;
			}
			else way(x,y-1,r,c,num);
		}
	}
	if(y+1<c){//x,y+1
		if(num[x*c+y]>=num[x*c+y+1]){
			if(num[x*c+y+1]==1){
				l++;
				if(l>length)length=l;
				l--;
			}
			else way(x,y+1,r,c,num);
		}
	}
	if(x-1>=0){//x-1,y
		if(num[x*c+y]>=num[(x-1)*c+y]){
			if(num[(x-1)*c+y]==1){
				l++;
				if(l>length)length=l;
				l--;
			}
			else way(x-1,y,r,c,num);
		}
	}
	if(x+1<r){//x+1,y
		if(num[x*c+y]>=num[(x+1)*c+y]){
			if(num[(x+1)*c+y]==1){
				l++;
				if(l>length)length=l;
				l--;
			}
			else way(x+1,y,r,c,num);
		}
	}
	l--;
}
void main(){    
	ifstream jsin("ski.in");
	int r=5,c=5;	
	jsin>>r;
	jsin>>c;
	int *num=new int[r*c];
	ofstream jsout("ski.out");

	for(int i=0;i<r;i++){
		for(int j=0;j<c;j++){
			jsin>>num[i*c+j];
		}
	}
	max(num,r,c);
	way(maxr,maxc,r,c,num);
	jsout<<length;
	jsin.close();
	jsout.close();
	
}






	

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?