Delphi课外练习题1---约瑟夫环增强版
lvcaolhx发了一个Delphi课外练习题1---约瑟夫环,问题如下:n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围:从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到剩下最后一个人。最后剩下的是哪一个人?(要求:只能使用数组、字符串解决问题,不能使用指针、链表)
测试数据:
6个人,报数4,从3开始,最终为1
15个人,报数5,从5开始,最终为5
10个人,报数5,从1开始,最终为3
现将此问题稍微复杂一些,为增强版,问题如下:
n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围:每人持有一个密码(正整数);从编号为k的人开始报数,数到m的那个人出列,将这个出列的人的密码作为新的m值;他的下一个人又从1开始报数,数到m的那个人又出列,再将这个出列的人的密码作为新的m值;依此规律重复下去,直到剩下最后一个人。最后剩下的是哪一个人?(要求:只能使用数组、字符串解决问题,不能使用指针、链表) 呵呵,看下,用我学的vfp解决 此题没有人回复吗?汗~~~ 6个人,报数4,从3开始,最终为1
15个人,报数5,从5开始,最终为5
10个人,报数5,从1开始,最终为3
测试通过,不知还有其他测试数据不?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Seach(n:integer;f:integer;s:integer):integer;
var
temp:array of Boolean;
i,j:Integer;
begin
setlength(temp,n+1);
for i:=0 to n do
temp:=True;
for i:=1 to n-1do
begin
j:=0;
while j<fdo
begin
if temp thenj:=j+1;
if (s+1)<n+1 then
s:=s+1
else
s:=s+1-n;
end;
if (s-1)=0 then
temp:=False
else
temp:=False;
end;
for i:=1 to ndo
if temp then Result:=i;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
a:Integer;
begin
a:=Seach(StrToInt(Edit1.Text ),StrToInt(Edit2.Text ),StrToInt(Edit3.Text ) );
Edit4.Text :=IntToStr(a);
end;
end.
页:
[1]