| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 862 人关注过本帖
标题:找国王- -有多少部落
只看楼主 加入收藏
yixiufly
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-3-17
收藏
得分:0 
回复 4楼 孤独一生
我自己的思路已经写好了,编译结果总是不对啊。。。只能求思路了。。。虽然我想用的也是递归
2015-07-14 23:00
yixiufly
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-3-17
收藏
得分:0 
回复 5楼 rjsp
我想的差不多也是这样,循环,然后判断遇到的是不是*,如果是,判断其上下左右,然后延伸,遍历过的改符号,例如‘1’。应该是算法不对了。。。。。新手,表示想不出来。。。。(⊙﹏⊙)b
#include<stdio.h>

int FindKing(int N, char *tride)
{
    int i;
    int king = 0;//国王
    char *p = tride;
for(i = 0; i < N*N-1; i++)
{
    if(p[i] = '*')
    {
        int m = i + 1;
        int n = i + N;
        if(p[m] == '*' && p[n] != '*')
        {
            p[m] = '1';
            p++;
            if(p[m] != '*'&& p[n] != '*')
            {
                king++;//   国王个数
                break;
            }
        }
        else if(p[m] != '*' && p[n] == '*')
        {
            p[n] = '1';
            n += N;
            if(p[m] != '*'&& p[n] != '*')
            {
                king++;//   国王个数
                break;
            }
        }
        else if(p[m] == '*' && p[n] == '*')
        {
            p[m] = '1';
            m++;
            if(p[m] != '*'&& p[n] != '*')
            {
                king++;//   国王个数
                break;
            }
        }
        else if(p[m] != '*'&& p[n] != '*')
            {
                king++;//   国王个数
                break;
            }
    }
}
}
int main()
{
    int i = 0;
    int N;
    char tride[300];
    scanf("%d",&N);
    getchar();
    gets(tride);
    FindKing(N,tride);
    return 0;
}


我这么写的。。。。漏洞太多。。。
2015-07-14 23:28
yixiufly
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-3-17
收藏
得分:0 
回复 10楼 wmf2014
谢谢啦。。。。我参考参考,自己的我改改看看能不能修正下。。。。
其实我自己有写,就是太渣。。。。所以这里交流下,,,,提升提升- -

这是代码- - 完全不对。。(⊙﹏⊙)b  新人水平不行
我努力瞅瞅- -合并下
#include<stdio.h>

int FindKing(int N, char *tride)
{
    int i;
    int king = 0;//国王
    char *p = tride;
for(i = 0; i < N*N-1; i++)
{
    if(p[i] = '*')
    {
        int m = i + 1;
        int n = i + N;
        if(p[m] == '*' && p[n] != '*')
        {
            p[m] = '1';
            p++;
            if(p[m] != '*'&& p[n] != '*')
            {
                king++;//   国王个数
                break;
            }
        }
        else if(p[m] != '*' && p[n] == '*')
        {
            p[n] = '1';
            n += N;
            if(p[m] != '*'&& p[n] != '*')
            {
                king++;//   国王个数
                break;
            }
        }
        else if(p[m] == '*' && p[n] == '*')
        {
            p[m] = '1';
            m++;
            if(p[m] != '*'&& p[n] != '*')
            {
                king++;//   国王个数
                break;
            }
        }
        else if(p[m] != '*'&& p[n] != '*')
            {
                king++;//   国王个数
                break;
            }
    }
}
}
int main()
{
    int i = 0;
    int N;
    char tride[300];
    scanf("%d",&N);
    getchar();
    gets(tride);
    FindKing(N,tride);
    return 0;
}
2015-07-14 23:30
yixiufly
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-3-17
收藏
得分:0 
我是这么想的,一个向右遍历,一个向下遍历;如果右边遇上“*”,下边是“#”,则标记右边为“1”,然后右边++,继续操作;  如果右边遇上“#”,下边“*”,则下边标记“1”,然后标记的下边那个 (i+N)继续操作;  直到遇到右边和下边都是“#”,然后king + 1,国王加 1 。  ( ⊙ o ⊙ )!   新人表示只能考虑到这个地步了
2015-07-14 23:40
快速回复:找国王- -有多少部落
数据加载中...
 
   



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

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