状态题目:排队
题目编号:78-排队 查看该题
状态: Unaccepted
测评机: Xeond[6]
得分: 40分
提交日期: 2008-11-12 23:06:00
有效耗时: 499毫秒
测试结果1: 通过本测试点|有效耗时312:ms
测试结果2: 测试结果错误.错误结果为:ZGJKLPTY
ZGJKYTP
ZGJKYT
正确结果应为:ZGJKLPTY
ZGJKYTP
JGZYTP
测试结果3: 通过本测试点|有效耗时62:ms
测试结果4: 测试结果错误.错误结果为:ONMLKJIHGFEDCBA
ONMLKJIABCDEFG
ONMLKJIABCDEF
ONMLKJIABCDE
ONMLKJIABCD
ONMLKJIABC
ONMLKJIAB
正确结果应为:ONMLKJIHGFEDCBA
IJKLMNOGFEDCBA
IJKLMNOABCDEF
NMLKJIABCDEF
NMLKJIFEDCB
JKLMNFEDCB
KLMNFEDCB
测试结果5: 测试结果错误.错误结果为:ABCDEFGHIJKLMNOPQRSTUVWXYZ
DCBAFGHIJKLMNOPQRSTUVWXYZ
DCBAFGHIJKLMNOPQRSTUVWXY
DCBAFGHIJKLMNOPQRSTUVWX
DCBAFGHIJKLMNXWVUTSRQP
DCBAFGHIJKLMNXWVUTSRQ
DCBAFGHIJKLMNXWVUTSR
DBAFGHIJKLMNXWVUTSR
DBAFGHIJKLMNXWVUTS
DBAFGHIJKLMNXWVUT
DBAFGHIJKLTUVWXN
DBAFGHIJKLTUVWX
DBAFGHIJKLTUVW
BAFGHIJKLTUVW
BAFGHIJKLTUV
BAFGHIJKLTU
BAFGHIJKLT
BAFGHIJKL
BAFGHIJK
BAFGHIJ
BAFGHI
BAFGH
BAFG
BAF
BA
B
正确结果应为:ABCDEFGHIJKLMNOPQRSTUVWXYZ
DCBAFGHIJKLMNOPQRSTUVWXYZ
DCBAFGHIJKLMNZYXWVUTSRQP
DBAFGHIJKLMNZYXWVUTSRQP
LKJIHGFABDNZYXWVUTSRQP
BAFGHIJKLNZYXWVUTSRQP
LKJIHGFABZYXWVUTSRQP
KJIHGFABZYXWVUTSRQP
KJIHGFABZYXWVUTPQR
KJIHGFABZYXWVUTRQ
GHIJKABZYXWVUTRQ
KJIHGBZYXWVUTRQ
HIJKBZYXWVUTRQ
IJKBZYXWVUTRQ
IJKBZYXWVUQR
ZBKJIXWVUQR
BKJIXWVUQR
IJKBWVUQR
KJIWVUQR
KJIWVUR
IJKVUR
JKVUR
KVUR
KVU
VU
V
测试结果6: 测试结果错误.错误结果为:ABCDEFG
ABCDGF
ABCDG
ABCD
正确结果应为:ABCDEFG
ABCDGF
BADGF
ABGF
测试结果7: 通过本测试点|有效耗时63:ms
测试结果8: 测试结果错误.错误结果为:ZGJKLPTY
ZGJKYTP
ZGJKYT
正确结果应为:ZGJKLPTY
ZGJKYTP
JGZYTP
测试结果9: 测试结果错误.错误结果为:ONMLKJIHGFEDCBA
ONMLKJIABCDEFG
ONMLKJIABCDEF
ONMLKJIABCDE
ONMLKJIABCD
ONMLKJIABC
ONMLKJIAB
正确结果应为:ONMLKJIHGFEDCBA
IJKLMNOGFEDCBA
IJKLMNOABCDEF
NMLKJIABCDEF
NMLKJIFEDCB
JKLMNFEDCB
KLMNFEDCB
测试结果10: 通过本测试点|有效耗时62:ms
提交代码:
program p78pp78;
var
a:array[1..100]of char;
s:string;
f:char;
n,i,j,k,p,q,c:longint;
begin
readln(s);
readln(k);
n:=length(s);
c:=n;
for i:=1 to k do
read(a[i]);
writeln(s);
for i:=1 to k do
begin
for j:=1 to c do
if a[i]=s[j] then
begin
delete(s,j,1);
break;
end;
if j<c div 2+c mod 2 then
begin
p:=1;
q:=j-1;
end
else
begin
p:=j;
q:=c-1;
end;
while p<q do
begin
f:=s[p];
s[p]:=s[q];
s[q]:=f;
inc(p);
dec(q);
end;
c:=c-1;
for j:=1 to c do
write(s[j]);
if i<k then writeln
end;
end.
#include<string>
using namespace std;
int main (void){
string queue;
cin>>queue;
// cout<<queue<<endl;
int n;
cin>>n;
for (int i=0;i<n;i++){
cout<<queue<<endl;
char c;
cin>>c;
int pos=queue.find(c);
string left,right;
left=queue.substr(0,pos);
right=queue.substr(pos+1,queue.size()-pos-1);
string s;
if (left.size()<=right.size()){
s=left;
for (int i=0,j=s.size()-1;i<j;i++,j--){
char temp;
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
s=s+right;
}
else{
s=right;
for (int i=0,j=s.size()-1;i<j;i++,j--){
char temp;
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
s=left+s;
}
queue=s;
}
cout<<queue;
// while(1);
return 0;
}