PASCAL全置换程序

发布于 科技 2024-02-21
9个回答
  1. 匿名用户2024-01-25

    program sou1;

    var a:array[1..100]of integer;n,i,x:integer;s:set of 1..100;

    beginreadln(n);

    i:=1;a[i]:=0;s:=;

    repeat

    repeat

    inc(a[i]);

    until not(a[i]in s)or(a[i]>n);

    if a[i]>n then begin i:=i-1;s:=s-[a[i]];end

    else begin

    s:=s+[a[i]];

    if i=n then begin for x:=1 to n do write(a[x]);writeln;s:=s-[a[i]];end

    else begin i:=i+1;a[i]:=0; end;

    end; until i<1;

    end.这个在我的编译器上是正确的,所以它应该是正确的。

  2. 匿名用户2024-01-24

    其实让别人教标准课程是很无聊的。

    自己动手也不错!

    只是时间会超过!

  3. 匿名用户2024-01-23

    通过置换和组合功能来编写程序;

  4. 匿名用户2024-01-22

    首先检查序列 m,mi<=m(i+1),否则为 0。

    那么,只要确定 s1,就可以确定整个序列。

    然后先找到一个符合要求的s序列,注意s1<=m1 2,这样从小数(-10 9一定够了,可以再研究一次)到m1 2(或m1 2-1 2),用二进制搜索找到一个有效的s1。

    至于直接 s1=m1 2(或 m1 2-1 2)是否属实,尚不确定,似乎也不是真的。

    简而言之,首先找到一个有效的 s 序列。

    以下 k 为正整数)。

    然后,用调整的想法来考虑它。

    1) 如果 S1 加 1,则 S2 减去 1,S3 加 1,S4 减去 1,S5 加 1。

    那么 s(k*2-1) 越来越接近 s(k*2),当它们彼此相等或相等时,它们就无法进一步调整,最小值 s(k*2)-s(k*2-1) 和 div 2 是 s1 加 1 的次数。

    此限制设置为 a1

    2) 如果 s1 为负 1,则。

    这一次,s(k*2) 和 s(k*2+1) 确定数量限制,思路是一样的,得到 a2 是好的,现在,有一个可行的 s 序列,s1 增加有 a1 种,s1 减少有 a2 种。

    总数是,a1+1+a2

  5. 匿名用户2024-01-21

    1.快速排序:

    procedure qsort(l,r:integer);

    var i,j,mid:integer;

    begini:=l;j:=r; mid:=a[(l+r) div 2];

    repeat

    while amid do dec(j);

    if i<=j then begin

    swap(a,a[j]);

    inc(i);dec(j);

    end;until i>j;

    if la[j] then swap(a,a[j]);

    end;d.冒泡分拣。

    procedure bubble_sort;

    var i,j,k:integer;

    beginfor i:=1 to n-1 do

    for j:=n downto i+1 doif a[j]r) or (a<=a[j]))then begin

    tmp[t]:=a; inc(i);

    endelse begin

    tmp[t]:=a[j];inc(j);

    end;inc(t);

    end;for i:=p to r do a:=tmp;

    end;procedure merge_sort(var a:listtype; p,r: integer);

    var q:integer;

    beginif p<>r then begin

    q:=(p+r-1) div 2;

    merge_sort (a,p,q);

    merge_sort (a,q+1,r);

    merge (a,p,q,r);

    end;end;

    beginmerge_sort(a,1,n);

    end.g.基数排序。

    想法:将每个元素从低到高排序一次。

  6. 匿名用户2024-01-20

    vara:array[0..10001] of longint;

    n,i,j,k,ans:longint;

    beginreadln(n);

    for i:=1 to n do

    read(a[i]);

    for i:=1 to n do

    for j:=1 to n-1 do

    if a[j]>a[j+1] then

    begink:=a[j];

    a[j]:=a[j+1];

    a[j+1]:=k;

    inc(ans);

    end;writeln(ans);

    end.第二个问题很容易在网上找到。

  7. 匿名用户2024-01-19

    默然。 没有数据范围? 然后冒泡,只有两条线**。

  8. 匿名用户2024-01-18

    有一个有序数据序列,需要在这个已经排列好的数据序列中插入一个数字,但数据序列在插入后仍然是有序的,这时就用上了一种新的排序方式——插入排序法,插入排序的基本操作是将一个数据插入到已经排序好的有序数据中, 为了得到新的数加一阶数据,该算法适用于少量数据的排序,时间复杂度为O(N 2)。是一种稳定的排序方法。 插入算法将要排序的数组分为两部分:

    第一部分包含数组的所有元素,但最后一个元素除外,第二部分仅包含这一个元素。 对第一部分进行排序后,插入排序将按升序排序。

    procedure insertsort(var r : filetype);

    至 r[1..n]、r[0] 是监视哨

    beginfor i := 2 到 n do insert r[2], .,r[n]//

    beginr[0] := r[i]; j := i - 1;

    while r[0] beginr[j+1] := r[j];向后移动大于 r[i] 的元素。

    j := j - 1

    endr[j + 1] := r[0] ;插入 r[i]。

    endend;InsertSort 将最后一个元素插入到订单的第一部分。

  9. 匿名用户2024-01-17

    就是构建一个数组,每次读取一个数字,都会从数组的第一位到最后一位进行搜索,并插入到适当的位置。

    例如,2 5 3 7 4

    A**(直接插入排序):

    vara:array[1..1000] of integer;

    i,j,k,n,m:integer;

    beginreadln(n);

    read(a[1]);

    for i:=2 to n do

    beginread(k);

    j:=1;while (k>a[j])and(j<=n) do j:=j+1;

    for m:=n downto j do a[m+1]:=a[m];

    a[j]:=k;

    end;for i:=1 to n do write(a[i],' ');

    readln;readln;

    end.

相关回答
6个回答2024-02-21

function jia(s1,s2:ansistring):ansistring;

var i,j,l1,l2:longint; >>>More

9个回答2024-02-21

1.要确定 a 是否能被 b 整除,只要 a 的余数除以 b = 0,那么它就可以被 b 整除。 否则,输出 a、除法、b、等号、商(可用可整除函数 div 整除),然后使用 a-b* 商。 >>>More

18个回答2024-02-21

1.随机生成:random表示随机,如random(100); 指随机生成 0 99 的整数。 >>>More

2个回答2024-02-21

它通常是用倒置数组完成的。

楼上的精度不高。 >>>More

17个回答2024-02-21

如果你不同意楼上,那是因为你的水平不好,而不是你不能广泛搜索。 >>>More