Beispiel #1
0
void dfs(int r, int c)
{
  int i = 0, countout = 0;
  if( n_solutions > 1 )
    return;
  if( (r<0) || (r>=n) || (c<0) || (c>=m) )
    return;
  if( '2' == warehouse[r][c] )
  {
    n_solutions++;
    return;
  }
  if( '#' == warehouse[r][c] )
    return;
  if( visited[r][c] )
    return;
  visited[r][c] = 1;
  for(i = 0;i < 4;++i)
  {
    if( valied(r+directions[i][0],c+directions[i][1]) )
      countout++;
    dfs(r+directions[i][0], c+directions[i][1]);
    if ( n_solutions > 1 )
      return;
  }
  if( (countout > 2) && ('1' != warehouse[r][c] || '2' != warehouse[r][c]) )  withstop = 1;
}
int returnDays(int d1, int d2, int m1, int m2, int y1, int y2)
{
	if (valied(d1, m1, y1) && valied(d2, m2, y2)){
		if (m1 == m2 && y1 == y2)
			return returndiff(d1, d2);
		int month[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
		if (m1 != m2)
		{
			if (y1 == y2){
				return returndiff(d1, d2) + returnMonthDiff(month, m1, m2);
			}
			else{
				return returndiff(d1, d2) + returnMonthDiff(month, m1, m2) + returnYearDiff(y1, y2);
			}
		}
		if (y1 != y2)
		{
			if (m1 == m2)
				return returndiff(d1, d2) + returnYearDiff(y1, y2);
		}
	}
}