描述:
输入1个数字和多个字符,中间均以空格隔开。假设数字取值为m(范围1~9),后面字符个数为n。假设n个字符围成一圈,从第一个字母开始循环报数,当数到m以后,第m个字母就出列,直到这n个字母全部出列。最后,按照出列的顺序输出这些字母,中间仍以空格隔开。取值范围:m为1到9, 字符个数n大于1小于20。
运行时间限制: 无限制
内存限制: 无限制
输入:
第一个为数字,后面为多个字符,均以空格隔开
输出:
输出重新排列后的字符,以空格隔开
样例输入:
3 a b c d e f g h i
样例输出:
c f i d h e b g a
答案提示:
建议采用循环链表
我的答案(JAVA):
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main{
private int m;//
private List<Character> ch=new ArrayList<Character>();
/**
* 输入
*/
public void input(){
Scanner sc=new Scanner(System.in);
String s=null;
try {
s=sc.nextLine();
String[] ssArr=s.split(" ");
m=Integer.parseInt(ssArr[0]);
for(int i=1;i<ssArr.length;i++){
ch.add(ssArr[i].charAt(0));
}
} catch (Exception e) {
m=-1;
ch.clear();
}finally{
sc.close();
}
}
public void countOff(){
// 判断输入合法性
if(m<1||m>9){
return;
}
if(ch.size()<=1||ch.size()>=20){
return;
}
int i=(m-1)%ch.size();
while(ch.size()>0){
System.out.print(ch.get(i)+" ");
ch.remove(i);
i+=m-1;
if(ch.size()>0)
i=i%ch.size();
}
}
public static void main(String[] args){
Main m=new Main();
m.input();
m.countOff();
}
}