zoukankan      html  css  js  c++  java
  • 深搜



    7
    3   8
    8   1   0
    2   7   4   4
    4   5   2   6   5
    
    (图1)

    图1给出了一个数字三角形。
    从指定的一个数往下走,可以走到下一层上和它最近的左边的那个数或者右边的那个数。
    任务:
    给定数字三角形中的一个位置,求从它开始所能到达的最大数 输入 输入数据包含多组测试数据,

    对于每组测试数据:
    输入的第一行是一个整数N (0 <= N <= 100),给出三角形的行数。
    (当N为0时,表示测试结束,你不需要处理本组数据)
    下面的N行给出数字三角形。数字三角形上的数的范围都在0和100之间。
    接下来一行有两个数,R和C,表示起始点位于第R行第C个位置。
    输出 输出若干行,每行对应一组测试数据的结果。 样例输入
    1
    2
    1 1
    5
    7
    3 8
    8 1 0 
    2 7 4 4
    4 5 2 6 5
    1 1
    6
    88 
    97 26 
    39 16 47 
    94 25 66 4 
    64 49 20 36 27 
    37 87 29 37 10 40 
    2 1
    0
    样例输出
    2
    8
    97


    这道题是上次选拔赛的题,应该是老师新出的题,所以百度上一直没有找到题解,刚刚问了一下过了的同学才知道,自己的解题思路完全有问题,问题所在居然是题理解错了,想得太简单,然而这道题要用到深搜的思想来做。。

    下面是代码:

    #include<cstdio>
    using namespace std;
    const int MAXN=100;
    int a[MAXN][MAXN];
    bool used[MAXN][MAXN];
    int dir[2][2]={1,0,1,1};
    int ans;
    int n;
    void dfs(int x,int y)
    {
    	used[x][y]=true;
    	for(int i=0;i<2;i++)
    	{
    		int nx=x+dir[i][0];
    		int ny=y+dir[i][1];
    		if(nx>=0 && nx<n && ny>=0 && ny<n && nx>=ny)
    		{
    			if(a[nx][ny]>ans)
    			{
    				ans=a[nx][ny];
    			}
    			if(!used[nx][ny])
    				dfs(nx,ny);
    		} 
    	}
    }
    int main()
    {
    	while(~scanf("%d",&n)&&n)
    	{
    		for(int i=0;i<n;i++)
    		{
    			for(int j=0;j<=i;j++)
    			{
    				scanf("%d",&a[i][j]);
    				used[i][j]=false;
    			}
    		}
    		int x,y;
    		scanf("%d%d",&x,&y);
    		ans=a[x-1][y-1];
    		dfs(x-1,y-1);
    		printf("%d
    ",ans);
    	}
    	return 0;
    }



    7
    3   8
    8   1   0
    2   7   4   4
    4   5   2   6   5
    
    (图1)

    图1给出了一个数字三角形。
    从指定的一个数往下走,可以走到下一层上和它最近的左边的那个数或者右边的那个数。
    任务:
    给定数字三角形中的一个位置,求从它开始所能到达的最大数。 输入 输入数据包含多组测试数据,

    对于每组测试数据:
    输入的第一行是一个整数N (0 <= N <= 100),给出三角形的行数。
    (当N为0时,表示测试结束,你不需要处理本组数据)
    下面的N行给出数字三角形。数字三角形上的数的范围都在0和100之间。
    接下来一行有两个数,R和C,表示起始点位于第R行第C个位置。
    输出 输出若干行,每行对应一组测试数据的结果。 样例输入
    1
    2
    1 1
    5
    7
    3 8
    8 1 0 
    2 7 4 4
    4 5 2 6 5
    1 1
    6
    88 
    97 26 
    39 16 47 
    94 25 66 4 
    64 49 20 36 27 
    37 87 29 37 10 40 
    2 1
    0
    样例输出
    2
    8
    97
  • 相关阅读:
    汇编语言2
    汇编语言1
    PE结构对照表
    PE详解之区块表(节表)和区块(节)(PE详解04)
    PE详解之IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用(PE详解03)
    PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
    PE详解之IMAGE_DOS_HEADER结构定义即各个属性的作用(PE详解01)
    8088汇编指令大全
    修改寄存器绕过保护
    python shuffle 文本行/Python 打乱txt文本顺序
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160254.html
Copyright © 2011-2022 走看看