社区讨论
全排,有一个点蜜汁不输出,求求大佬解答
P1088[NOIP 2004 普及组] 火星人参与者 5已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mi6h845p
- 此快照首次捕获于
- 2025/11/20 04:50 4 个月前
- 此快照最后确认于
- 2025/11/20 04:50 4 个月前
RT
90分,其中一个点就是 too many or too few lines。。。
我快疯了。。还有pascal 3.0.0的bug。。调试和和正常运行,同一个程序输出的东西居然不一样。。
跪求神犇解答
CPPvar i,total,n,m,p,j:longint;
f:array[1..10010] of boolean;
a,b:array[1..10010] of longint;
procedure dfs(dep,sign:longint);
var i:longint;
begin
if dep=0 then dfs(dep+1,sign);
if dep>n
CPP then
begin
inc(total);
if total>m then
begin
for i:=1 to n-1 do write(a[i],' ');
writeln(a[n]);
halt;
end;
end
else
if sign=1
then
begin
for i:=b[dep] to n do
if f[i]=false then
begin
a[dep]:=i;
f[i]:=true;
if i=b[dep] then dfs(dep+1,1)
else dfs(dep+1,2);
f[i]:=false;
end;
end
else
for i:=1 to n do
if f[i]=false then
begin
a[dep]:=i;
f[i]:=true;
dfs(dep+1,2);
f[i]:=false;
end;
end;
begin
readln(n);
readln(m);
for i:=1 to n do begin read(a[i]);b[i]:=a[i];end;
total:=0;
p:=1;
for i:=2 to n do
begin
if p*i>m then break;
p:=p*i;
end;
fillchar(f,sizeof(f),false);
for j:=1 to n-i-2 do f[a[j]]:=true;
dfs(n-i-1,1);
end.
回复
共 4 条回复,欢迎继续交流。
正在加载回复...