洛谷 P1098 字符串的展开



可以说是非常变态了  全是细节问题 

#include <iostream>
using namespace std;
void put(int p1,int p2,int p3, char fst, char lst)
{
	if(p1 == 1)
	{
		if(p3 == 1)
		{
			char tc = fst + 1;
			while(tc < lst)
			{
				int t = p2;
				while(t--)
				{
					cout<<tc;
				}
				tc++;
			}
		}
		else 
		{
			char tc = lst - 1;
			while(tc > fst)
			{
				int t = p2;
				while(t--)
				{
					cout<<tc;
				}
				tc--;
			}
		}
	}
	else if(p1 == 2)
	{
		if(p3 == 1)
		{
			char tc = fst + 1 - 32;
			while(tc < lst - 32)
			{
				int t = p2;
				while(t--)
				{
					cout<<tc;
				}
				tc++;
			}
		}
		else
		{
			if(lst >= 'a' && lst <='z')
			{
				char tc = lst - 1 - 32;
				while(tc > fst - 32)
				{
					int t = p2;
					while(t--)
					{
						cout<<tc;
					}
					tc--;
				}
			}
			else
			{
				char tc = lst - 1;
				while(tc > fst)
				{
					int t = p2;
					while(t--)
					{
						cout<<tc;
					}
					tc--;
				}
			}
		}
	}
	else
	{
		if(p3 == 1)
		{
			char tc = fst + 1;
			while(tc < lst)
			{
				int t = p2;
				while(t--)
				{
					cout<<'*';
				}
				tc++;
			}
		}
		else
		{
			char tc = lst - 1;
			while(tc > fst)
			{
				int t = p2;
				while(t--)
				{
					cout<<'*';
				}
				tc--;
			}
		}
	}
}
int main()
{
	int p1, p2, p3;
	cin>>p1>>p2>>p3;
	
	string ss;
	cin>>ss;
	
	for(int i = 0; i < ss.length(); i++)
	{
		if(ss[i] != '-')
			cout<<ss[i];
		else
		{
			if(ss[i - 1] >= 'a' && ss[i - 1] <= 'z' && ss[i + 1] >= 'a' && ss[i + 1] <= 'z' || ss[i - 1] >= '0' && ss[i - 1] <= '9' && ss[i + 1] >= '0' && ss[i + 1] <= '9')
			{
				if(ss[i - 1] < ss[i + 1]) 
				{
					put(p1, p2, p3, ss[i - 1], ss[i + 1]);
				}
				else
				{
					cout<<ss[i];
				}
			}
			else
			{
				cout<<ss[i];
			}
		}
	}
	return 0;
}



posted @ 2018-05-24 16:41  张浦  阅读(93)  评论(0编辑  收藏  举报