回 帖 发 新 帖 刷新版面

主题:回复者都+++++++

[em18][em18][em18][em18][em18][em18][em18]问题:输入一个正整数N(〈=10),将1..2n这2n个数围成一圈,使任意相棱两数和为质数。规定:第一个数为1;
输出:一个方案
      方案总数
如:
   输入:4
   输出:1 2 3 8 5 6 7 4
         Total=4
哪位高手解的出啊?   
(注:用TP解)

回复列表 (共10个回复)

沙发

program f;
begin
.....
.....
end.

板凳

先+再说!

3 楼

没人会吗?

4 楼

用DP,好象类似于广度搜索。

5 楼

以上纯属废话

6 楼

sorry 我被盗号了

7 楼

++++++++fen

8 楼

++++++fen~~~~~~~~~~

9 楼

我编了个程序,while循环总是出不来,请各位高手看一看哪里错了:
program asd;
var ok,b:array[1..39]of boolean;
    a:array[1..39] of integer;
    k:longint;
    i,n,j,s:integer;
begin
readln(n);
n:=n*2;
for i:=1 to 39 do a[i]:=1;
for s:=3 to 37 do
  if s in[3,5,7,11,13,17,19,23,29,31,37] then
   ok[s]:=ture;
i:=2;
while i>1 do begin
  repeat
   a[i]:=a[i]+1;
   for j:=1 to i-1 do
    if a[j]=a[i] then break;
   for j:=i+1 to n do
    if a[j]=a[i]then break;
   if j=n then b[i]:=true;
  until (a[i]>n)or(ok[a[i]+a[i-1]);
  if a[i]>n then begin a[i]:=0;i:=i-1;end
   else if i=n then k:=k+1
   else begin i:=i+1;a[i]:=1;
  end;
end;
for i:=1 to n do writeln(a[i],' ');
writeln('Total=',k);
end.

10 楼

+++++++++

我来回复

您尚未登录,请登录后再回复。点此登录或注册