| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4813 人关注过本帖
标题:青蛙过桥🐸
只看楼主 加入收藏
yslief
Rank: 5Rank: 5
来 自:水泊
等 级:职业侠客
帖 子:57
专家分:340
注 册:2016-11-14
收藏
得分:0 
回复 19楼 雨淋凉
bool stone[M];   boll 改为 int
stone[i] = false;  false 改为 0
stone[tmp] = true;  true 改为 1
2017-03-02 15:28
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
//附送楼主一个走法输出的代码
#include<stdio.h>
#include<stack>
#include<windows.h>
using namespace std;
stack<int>Minimum;stack<int>active;
int L,S,T,M,total;/*total记录踩到的石子数*/
int last;//最后一个石子位置
int*stone;//数组以0和1判断有石子和无石子
int min;
void Calculate(int pos)//pos传入青蛙当前的位置
{
    int i;
    if(pos>last)
    {
        if(total<min)
        {
            min=total;
            Minimum=active;return;
        }
    }
    for(i=S;i<=T;i++)
    {
        if(i+pos>L-1)
        {
            if(total<min)
            {
                min=total;
                Minimum=active;
            }
            return;
        }
        if(stone[pos+i])
            total++;
        active.push(pos+i);
        Calculate(pos+i);
        active.pop();
        if(stone[pos+i])
            total--;//复原
    }
}
void Destack()
{
    HANDLE h;
    int data;
    if(!Minimum.empty())
    {
        data=Minimum.top();
        Minimum.pop();
        Destack();
        if(stone[data])
        {
            h=GetStdHandle(STD_OUTPUT_HANDLE);
            SetConsoleTextAttribute(h,FOREGROUND_RED);
            printf("%d,",data);
            SetConsoleTextAttribute(h,FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN);
        }
        else
            printf("%d,",data);
    }
}
int main()
{
    int i,tmp_stone;
    scanf("%d",&L);
    stone=(int*)malloc(L*sizeof(int));
    memset(stone,0,L*sizeof(int));
    scanf("%d %d %d",&S,&T,&M);
    for(i=0;i<M;i++)
    {
        scanf("%d",&tmp_stone);
        stone[last=tmp_stone]=1;//标出数组中的石子
    }
    printf("石头位置(第一个元素为起点):\n");
    for(i=0;i<L;i++)
    {
        printf("%d,",stone[i]);
    }
    total=0;min=M;//初始化
    Calculate(0);
    printf("踩到石头数:%d\n",min);
    printf("走法:\n");
    Destack();
    return 0;
}
2017-03-02 16:01
雨淋凉
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-3-1
收藏
得分:0 
回复 17楼 azzbcc
感激不尽 感谢各位大神啦
2017-03-02 18:56
快速回复:青蛙过桥&#128056;
数据加载中...
 
   



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

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