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

Gas Station

时间:2014-12-21 11:29:21      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

题目提示采用贪心算法,不知道别人怎么实现的,可以参考下别人的思路。

答案如下:

class Solution {
public:
	vector<int> leftgas;
	int len;
    int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
        len = gas.size();
		int i=0;
		leftgas.resize(gas.size());
		for (i=0; i<len; i++)
	    {
         	leftgas[i] = gas[i] - cost[i];
		}
		pair<bool,int> temp;
        temp = IndexComplete();
        if(temp.first == true)
		 return temp.second;


		return -1;
    }
	pair<bool,int> IndexComplete()
	{
	  int allgas = 0;
	  int backwardindex = 0;
	  int forwardindex = 0;
	  bool ret;
      while(1)
      {
        allgas +=leftgas[forwardindex++];
		
		if(allgas >= 0)
		{
		 
		   if(forwardindex  == backwardindex || forwardindex  == len)
		   	return pair<bool,int>(true,backwardindex);
		}
		else
		{
            ret = SupplyGas(allgas,backwardindex,forwardindex);
			if(ret == false)
			return pair<bool,int>(false,backwardindex);

		}
		
	  }

	}
	bool  SupplyGas(int &allgas,int& backwardindex,int forwardindex )
	 {
	  	
        while(1)
        {
          if(backwardindex == 0)
          {
             backwardindex = len-1;
		  }
		  else
		  {
             backwardindex--;
		  }
		  
          allgas += leftgas[backwardindex];
		  if(allgas >= 0)
		  {
             return true;
		  }
		  else
		  {
            if(backwardindex <= forwardindex)
			  return false;

		  }
		 
		 
		}

	 }
};

 

Gas Station

标签:

原文地址:http://www.cnblogs.com/xgcode/p/4176286.html

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