洗牌问题答案pas转c语言

来源:百度知道 编辑:UC知道 时间:2024/06/25 17:27:32
var
a,b:array[1..20000] of integer;
i,j,m,n:integer;

procedure solve;
var
temp:integer;
begin
for i:=1 to 2*n do
if i mod 2=0 then b[i]:=a[i div 2]
else b[i]:=a[n+(i+1) div 2];
for i:=1 to 2*n do
a[i]:=b[i];
end;

function yanzhen:boolean;
var
i:integer;
begin
yanzhen:=true;
for i:=1 to 2*n do
if a[i]<>i then begin yanzhen:=false; break;end;
end;

begin
while not seekeof(input) do
begin
readln(n);
for i:=1 to 2*n do
a[i]:=i;
m:=1;
solve;
while not (yanzhen) do
begin
solve;
m:=m+1;end;
writeln(m);
end;
end.
你真实姓名是什么?

#include <stdio.h>
int a[20000],b[20000];
int i,j,m,n;

void solve(void)
{
int i,temp;
for(i=1;i<=2*n;i++)
if(i%2==0) b[i]=a[i/2];
else b[i]=a[n+(i+1)/2];
for(i=1;i<=2*n;i++) a[i]=b[i];
}

int yanzhen(void);
{
int i,yz;
yz=1;
for(i=1;i<=2*n;i++)
if(a[i]<>i)
{
yz=0; break;
}
return yz;
}

int main(void)
{
FILE*input;
input=fopen("路径","r");
while(!feof(input))
{
fscanf(input,"%d",&n);
for(i=1;i<=2*n;i++)
a[i]:=i;

m:=1;
solve();
while(!yanzhen)
{
solve();
m:=m+1;
}
printf("%d\n",m);
}
}

大概样子是这样,不过你Pascal代码有问题,我也没办法

把这个写成C++吗???请加QQ512539745