程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ 1231 The Alphabet Game

POJ 1231 The Alphabet Game

編輯:C++入門知識

POJ 1231 The Alphabet Game


【題意簡述】:輸入的k和p,k表示有幾個字母,也就是輸入有幾行,p表示每個字母有幾個,是以坐標的形式出現的(x,y).現在讓我們將相同的字母劃分在一個矩形塊中,問能否實現。

【分析】:唉,低級失誤!!!記住!積累!

/*
	Date:  2014/11/04
	Time:  21:38
	By	:  VID
	
	Attention:
		坐標的建立是理解這個問題,梳理思路的關鍵。
		我的坐標系是x軸指向右,y軸指向下,就像題中的圖一樣! 
*/
// 228K 0ms

#include
using namespace std;

#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define Inf 1000000000

int lef[27],righ[27],up[27],under[27];

bool check(int n)
{
	for(int i = 0;i=lef[i]&&lef[j]<=righ[i]) || (righ[j]<=righ[i]&&righ[j]>=lef[i]))
			&&((up[j]>=up[i]&&up[j]<=under[i]) || (under[j]<=under[i]&&under[j]>=up[i])))
			
			return 0;
		}
	}
	return 1;
}

int main()
{
	int t,k,p;
	int x,y;
	cin>>t;
	while(t--)
	{
		cin>>k>>p;
		for(int i = 0;i>x>>y;
				ll = Min(ll,x),rr = Max(rr,x),uup = Min(uup,y),un = Max(un,y);
			}
			lef[i] = ll,righ[i] = rr,up[i] = uup,under[i] = un;
		}
		
		for(int i = 0;i lef[j] && lef[i]lef[j]) righ[i] = righ[j];
				if(up[i] > up[j] && up[i] < under[j])  up[i] = up[j];
				if(under[i] < under[j]&& under[i]>up[j]) under[i] = under[j];
			}
		}
		if(check(k)) cout<<"YES"<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved