uva 127 栈

https://vjudge.net/problem/UVA-127

水题一道,涉及到的数据结构也就是栈,编完之后输入数据不出结果

先存在这里,然后回过来再找错误吧,做题少就是不行

另外程序有些地方代码过于繁琐,还需改进

#include<iostream>
#include<sstream>
#include<string>
#include<vector>
#include<stack>
using namespace std;

int main()
{
	string aline, bline;
	while (getline(cin, aline)) {
		if (aline == "#") break;
		getline(cin, bline);
		stack<pair<char, char> > pile[52 + 1];
		int k = 0;
		stringstream line(aline);
		while (line >> aline) pile[++k].push(make_pair(aline[0], aline[1]));
		stringstream cline(bline);
		while (cline >> bline) pile[++k].push(make_pair(bline[0], bline[1]));
		bool ok = true, pos[52 + 1];
		for (int i = 1; i <= k; i++) pos[i] = i;
		while (k != 1)
		{
			for (int i = 2; i <= k; i++) {
				if (i > 3 && !pile[pos[i]].empty() && !pile[pos[i - 3]].empty() 
					&& (pile[pos[i]].top().first == pile[pos[i - 3]].top().first
						|| pile[pos[i]].top().second == pile[pos[i - 3]].top().second)) {
					pile[pos[i - 3]].push(pile[pos[i]].top());
					pile[pos[i]].pop();
					if (pile[pos[i]].empty()) {
						for (int j = i + 1; j <= k; j++)
							pos[j - 1] = pos[j];
						k--;
					}
					ok = false; break;
				}
				if (!pile[pos[i]].empty() && !pile[pos[i - 1]].empty()
					&& (pile[pos[i]].top().first == pile[pos[i - 1]].top().first
						|| pile[pos[i]].top().second == pile[pos[i - 1]].top().second)) {
					pile[pos[i - 1]].push(pile[pos[i]].top());
					pile[pos[i]].pop();
					if (pile[pos[i]].empty()) {
						for (int j = i + 1; j <= k; j++)
							pos[j - 1] = pos[j];
						k--;
					}
					ok = false; break;
				}
			}
			if (ok) break;
		}
		if(k==1) printf("%d pile remaining:", k);
		else printf("%d piles remaining:", k);
		for (int i = 1; i <= k; i++) printf(" %d", pile[pos[i]].size());
		puts("");
	}
}
/*
QD AD 8H 5S 3H 5H TC 4D JH KS 6H 8S JS AC AS 8D 2H QS TS 3S AH 4H TH TD 3C 6S 
8C 7D 4C 4S 7S 9H 7C 5D 2S KD 2D QH JD 6D 9D JC 2C KH 3D QC 6C 9S KC 7H 9C 5C
AC 2C 3C 4C 5C 6C 7C 8C 9C TC JC QC KC AD 2D 3D 4D 5D 6D 7D 8D TD 9D JD QD KD
AH 2H 3H 4H 5H 6H 7H 8H 9H KH 6S QH TH AS 2S 3S 4S 5S JH 7S 8S 9S TS JS QS KS
#
*/

猜你喜欢

转载自blog.csdn.net/qq_41776911/article/details/81150212
今日推荐