Đến nội dung


Chú ý

Nếu các bạn đăng kí thành viên mà không nhận được email kích hoạt thì hãy kiểm tra thùng thư rác (spam). Nếu không biết cách truy cập vào thùng thư rác thì các bạn chịu khó Google hoặc đăng câu hỏi vào mục Hướng dẫn - Trợ giúp để thành viên khác có thể hỗ trợ.


Hình ảnh

pascal: in ra các hoán vị


  • Please log in to reply
Chủ đề này có 8 trả lời

#1 NGOCTIEN_A1_DQH

NGOCTIEN_A1_DQH

    Never Give Up

  • Thành viên
  • 625 Bài viết
  • Giới tính:Nam
  • Đến từ:12A1, THPT Dương Quảng Hàm, Hưng Yên

Đã gửi 13-03-2012 - 20:46

viết chương trình nhập số nguyên dương $ N /leq 10 $ từ bàn phím, in ra màn hình tất cả các hoán vị của tập $ {1,2,...N} $
p/s: viết cả thuật toán nha mọi người
Em cắm hoa tươi đặt cạnh bàn

Mong rằng toán học bớt khô khan

Em ơi trong toán nhiều công thức

Cũng đẹp như hoa lại chẳng tàn

#2 perfectstrong

perfectstrong

    $LOVE(x)|_{x =\alpha}^\Omega=+\infty$

  • Quản trị
  • 4154 Bài viết
  • Giới tính:Nam
  • Sở thích:Đàn guitar, ngắm người mình yêu, học toán

Đã gửi 13-03-2012 - 22:53

Code:
uses crt;
const maxn=10;
var a: array[1..maxn] of integer;
    n,m: integer;
    sn: longint;
(*==============================*)
procedure init;
var i: integer;
begin
write('Nhap so N=');readln(n);
for i:=1 to n do a[i]:=i;
end;
(*==============================*)
procedure swap( var x,y: integer);
var z: integer;
begin z:=x; x:=y; y:=z;
end;
(*==============================*)
procedure print;
var i: integer;
begin
sn:=sn+1;
for i:=1 to n do write(a[i]);
writeln;
end;
(*==============================*)
procedure hv(k: integer);
var j: integer;
begin
if k=1 then print
else
  for j:=k downto 1 do
  begin
    swap(a[k],a[j]);
    hv(k-1);
    swap(a[k],a[j]);
  end;
end;
(*===============================*)
begin
clrscr;
sn:=0;
init;
hv(n);
if sn<>0 then
writeln('Co tat ca',sn,' hoan vi cua ',n,'  so')
else writeln('Vo nghiem');
readln;
end.

Luôn yêu để sống, luôn sống để học toán, luôn học toán để yêu!!! :D

$$\text{LOVE}\left( x \right)|_{x = \alpha}^\Omega = + \infty $$




I'm still there everywhere.

#3 trbinh

trbinh

    Binh nhất

  • Thành viên
  • 29 Bài viết

Đã gửi 11-05-2014 - 16:11

Sao mình chạy chương trình nó không ra gì cả bạn ơi, bạn xem lại giúp mình



#4 DuongThelong

DuongThelong

    Lính mới

  • Thành viên
  • 7 Bài viết
  • Giới tính:Nam
  • Đến từ:THPT Chuyên Bạc Liêu

Đã gửi 30-05-2015 - 10:32

HAY NHỈ!! NHƯNG TIẾC LÀ VIẾT SAI HẾT RỒI!! :)


Bài viết đã được chỉnh sửa nội dung bởi DuongThelong: 30-05-2015 - 10:34


#5 perfectstrong

perfectstrong

    $LOVE(x)|_{x =\alpha}^\Omega=+\infty$

  • Quản trị
  • 4154 Bài viết
  • Giới tính:Nam
  • Sở thích:Đàn guitar, ngắm người mình yêu, học toán

Đã gửi 22-06-2015 - 22:32

HAY NHỈ!! NHƯNG TIẾC LÀ VIẾT SAI HẾT RỒI!! :)

Sai chỗ nào vậy?


Luôn yêu để sống, luôn sống để học toán, luôn học toán để yêu!!! :D

$$\text{LOVE}\left( x \right)|_{x = \alpha}^\Omega = + \infty $$




I'm still there everywhere.

#6 hoicmvsao

hoicmvsao

    Thượng sĩ

  • Thành viên
  • 299 Bài viết
  • Giới tính:Nam
  • Đến từ:Nghĩa Đàn - Nghệ An (PBC)
  • Sở thích:Tổ hợp, Bất đẳng thức

Đã gửi 04-10-2015 - 14:19

Su dung thuat vet can:

procedure hoanvi(i);

var

begin

 for j:=1 to n do

  if b[j] then

   begin

     a[i]:=j;

     b[i]:=false;

     if (i=n) then result else hoanvi(i+1);

     b[i]:=true;

    end;

 end;


Bài viết đã được chỉnh sửa nội dung bởi hoicmvsao: 04-10-2015 - 14:20


#7 cuongtk2002

cuongtk2002

    Lính mới

  • Thành viên mới
  • 2 Bài viết

Đã gửi 07-07-2017 - 17:48

{Đề nhập n in ra các hoán vị từ 1 đến n đúng ko??  :huh:
  vd: n=3    >>   1 2 3, 132, 213, 231, 312, 321   }  
 *Lưu ý:* ae nhập n<=8 thôi chứ nó tỉ tỉ tường hợp thì chạy nát máy (n>8 chắc đc nhưng nó chạy thì lâu lắm)   
THUẬT TOÁN TỰ LÀM !  (mời ae xem)
:) 
var a:array[0..1000000] of string;
    s,x:string;
    i,j,k,n:longint;
    bl,kq:boolean;
    tam:char;
begin
readln(n);
s:='';
for i:=1 to n do begin str(i,x); s:=s+x; end;
k:=1; a[k]:=s;
 kq:=true;
 while kq=true do
 begin
 kq:=false;
 for i:=2 to length(s) do
  begin
  bl:=true;
  tam:=s[1];
  s[1]:=s[i];
  s[i]:=tam;
  for j:=1 to k do if s=a[j] then bl:=false;
  if bl=true then begin
                  inc(k); a[k]:=s; kq:=true; end
  else s:=a[k];
 end;
 end;
 for i:=1 to k do write(a[i],' ');
readln
end.
P/s: có j sai sót ae báo nhá !

Bài viết đã được chỉnh sửa nội dung bởi cuongtk2002: 07-07-2017 - 18:03


#8 duongtsurumi

duongtsurumi

    Lính mới

  • Thành viên mới
  • 1 Bài viết
  • Giới tính:Nữ
  • Đến từ:Việt Nam

Đã gửi 28-12-2017 - 16:47

Sai chỗ nào vậy?

Bạn giỏi toán quá


Chuyên cung cấp các sản phẩm máy bơm nước matra của Ý và máy bơm Tsurumi của Nhật Bản http://giamaybomnuoc.com/may-bom-nuoc-thai-tsurumi.html


#9 cuongtk2002

cuongtk2002

    Lính mới

  • Thành viên mới
  • 2 Bài viết

Đã gửi 26-03-2019 - 02:21

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include<iostream>
#define FOR(i, a, b) for(int i=a; i<=b; i++)
using namespace std;

bool b[10];
int a[10];
int n, i, j;

void printf(){
	FOR(i, 1, n) cout<<a[i]; cout<<endl;
}
void f(int u){
	if (u==n+1){
		printf(); return;
	}
	
	FOR(i, 1, n)
		if (!b[i]){
			b[i]=true;
				a[u]=i;
				f(u+1);
			b[i]=false;
		}
}
int main(){
	cin>> n;
	f(1);
}





1 người đang xem chủ đề

0 thành viên, 1 khách, 0 thành viên ẩn danh