码迷,mamicode.com
首页 > 其他好文 > 详细

深搜+模拟 寻宝

时间:2017-10-28 16:40:45      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:16px   art   cin   一个   syn   star   font   namespace   +=   

#include<iostream>
#include<cmath>
using namespace std;
const int MOD=20123;
int f[10005][105],stair[105],ans,n,m;
void dfs(int k,int num)
{
    int t=abs(f[k][num]),q=0;
    ans+=t;
    if (k==n) return;
    int s=abs(f[k][num]);
    s%=stair[k]; //对楼梯数取模
    if (s==0) s=stair[k]; //特判s=0的情况(这里其实也可以反向搜索,即s=0时,反搜的第一个有楼梯房间就是所求)
    while (q<s) //模拟过程
    {
        if (f[k][num]>0) q++; //有楼梯的话q++,q来计数
        if (num==m-1 && q!=s) num=0; //这里需要特判!如果q=s,那么y就是所求,不需要再进行变值,所以要加q!=s的条件 
        else if (q!=s) num++;
    }
    dfs(k+1,num);
    return;
}
int main()
{
    ios::sync_with_stdio(false);
    cin>>n>>m;
    for (int i=1;i<=n;i++)
        for (int j=0;j<m;j++)
        {
            int a,b;
            cin>>a>>b; //这里我采用的是负数来判断是否有楼梯
            if (a==0) f[i][j]=-b; //没楼梯就等于负数(小于0)
            else
            {
                f[i][j]=b; //有楼梯就等于正数,且楼层楼梯数++
                stair[i]++;
            }
        }
    int start;
    cin>>start;
    dfs(1,start);
    cout<<ans<<endl;
    return 0;
}

 

深搜+模拟 寻宝

标签:16px   art   cin   一个   syn   star   font   namespace   +=   

原文地址:http://www.cnblogs.com/powerfulbee/p/7747010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!