| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1002 人关注过本帖, 1 人收藏
标题:水池问题,求找错
只看楼主 加入收藏
xexxql
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2012-12-21
收藏
得分:0 
回复 10楼 azzbcc
对对对,一个,就是连起来就算一个,我觉得我那个是对的,但是输出不了
2012-12-26 13:24
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
那就明显逻辑问题了,而且,你后面写错了,应该是x = x + 1?


[fly]存在即是合理[/fly]
2012-12-26 13:42
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
#include<stdio.h>
#define MAX 10
int a[MAX][MAX];
int m, n;
void Init()
{
    int i, j;
    for (i = 0;i <= m+1;++i)
        a[i][0] = a[i][n+1] = -1;
    for (i = 0;i <= n+1;++i)
        a[0][i] = a[m+1][i] = -1;
    for (i = 1;i <= m;++i)
    for (j = 1;j <= n;++j)
        scanf("%d", &a[i][j]);
}
int Judge(int x, int y)
{
    if (-1 == a[x][y])    return -1;
    if (0 == a[x][y])    return 0;
    a[x][y] = 0;
    Judge(x, y - 1);//
    Judge(x - 1, y);//
    Judge(x, y + 1);//
    Judge(x + 1, y);//
    return 1;
}
int Get()
{
    int number = 0;
    for (int i = 1;i <= m;++i)
    for (int j = 1;j <= n;++j)
        if (Judge(i, j))
        ++number;
    return number;
}
int main()
{
    int N;
    scanf("%d", &N);
    while (N--)
    {
        scanf("%d%d", &m, &n);
        Init();
        printf("%d\n", Get());
    }
    return 0;
}


[fly]存在即是合理[/fly]
2012-12-26 14:39
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
以下是引用azzbcc在2012-12-26 14:39:27的发言:

#include
#define MAX 10
int a[MAX][MAX];
int m, n;
void Init()
{
    int i, j;
    for (i = 0;i <= m+1;++i)
        a[0] = a[n+1] = -1;
    for (i = 0;i <= n+1;++i)
        a[0] = a[m+1] = -1;
    for (i = 1;i <= m;++i)
    for (j = 1;j <= n;++j)
        scanf("%d", &a[j]);
}
int Judge(int x, int y)
{
    if (-1 == a[x][y])    return -1;
    if (0 == a[x][y])    return 0;
    a[x][y] = 0;
    Judge(x, y - 1);//左
    Judge(x - 1, y);//上
    Judge(x, y + 1);//右
    Judge(x + 1, y);//下
    return 1;
}
int Get()
{
    int number = 0;
    for (int i = 1;i <= m;++i)
    for (int j = 1;j <= n;++j)
        if (Judge(i, j))
        ++number;
    return number;
}
int main()
{
    int N;
    scanf("%d", &N);
    while (N--)
    {
        scanf("%d%d", &m, &n);
        Init();
        printf("%d\n", Get());
    }
    return 0;
}
请问上面红色的那句有什么用意呢??

新手发言,请多指教。
2012-12-26 15:32
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
回复 14楼 wangjialong
已经找到的点标记

否则下面的递归会死循环


[fly]存在即是合理[/fly]
2012-12-26 15:35
xexxql
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2012-12-21
收藏
得分:0 
回复 15楼 azzbcc
可以了,拜谢~
2012-12-26 21:43
xexxql
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2012-12-21
收藏
得分:0 
回复 15楼 azzbcc
大神,发现一个问题,就是如果我开始想计算两个地图
那输入一个地图后就开始计算了,但是题目输入要求必须都输入然后才能计算结果,是不是就要用三维数组了,先全部赋值,再输出?
2012-12-26 22:29
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
你竟然会问这个。。。

我就提供一个人参考,小问题还是自己解决吧


[fly]存在即是合理[/fly]
2012-12-26 23:05
快速回复:水池问题,求找错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023903 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved