HRBUST - 1602 (船翻了在了小水沟,哎)

一个班上有n个学生,学生编号从1到n,班主任现在要给这n个人安排座位,每两个人坐一桌。学生们都不是很乖,如果两个编号相邻的人坐在一起的话就会经常说话,影响学习,所以编号相邻的人不能坐在一起。这些学生要么是左撇子,要么是右撇子,安排座位时不能出现右撇子在左,左撇子在右的情况,不然写字的时候手容易碰在一起,也会影响学习。请问如何安排座位?

Input

有多组测试数据,对于每组测试数据,第一行为一个整数n(2<n<=100),n保证为偶数,第二行一个字符串,长度为n,表示1到n号学生是左撇子还是右撇子,左撇子用L表示,右撇子用R表示。

Output

对于每组测试数据,输出座位的安排,共有n/2行,每个是两个用一个空格隔开的两个整数a和b,表示编号为a的学生和编号为b的学生。如果有多组解,输出任意一组即可。

 

相邻两组测试数据之间用空行隔开。

 

 

Sample Input

6
LLRLLL
4
RRLL

Sample Output

1 4
2 5
6 3

3 1
4 2

一道我没写出来的题目,实在太菜了。

题目的要求是序号不能挨着坐,同样左撇子和右撇子不能互相碰到(就是左撇子在左排,右撇子在右排),其他都是可以的(两个左撇子和两个右撇子是可以坐的)。一开始没有什么思路,将问题复杂化了,看了看题解,就是一个LLRLLL 分两半,看他们的手往哪里撇,就这样一个一个判断就可以了,一个for 循环就可以解决。(数学不行)。

#include<bits/stdc++.h>
#include<iostream>
#include<stdio.h>
using namespace std;
const int maxn=1005;
typedef long long ll;


int main()
{
	int i,j;
	int t;
	int g=0;
	while(cin>>t)
	{
		if(g)
			cout<<endl;
		g=1;
		string s;
		cin>>s;
		int len=s.length();
		for(i=0;i<len/2;i++)
		{
			if(s[i]==s[i+len/2])
				cout<<i+1<<' '<<i+1+len/2<<endl;
			else if(s[i]=='R'&&s[i+len/2]=='L')
				cout<<i+len/2+1<<' '<<i+1<<endl;
			else    
				cout<<i+1<<' '<<i+len/2+1<<endl;
			
		}
		
		
	}
	
	
	
	return 0;
}

就是这么简单 ,将问题复杂化了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值