Latest topics
» Sửa chữa Smartphone – nghề thời thượngby hoangyencps 14/1/2014, 8:58 pm
» Teen thời @ ôn thi đại học như thế nào?
by hoangyencps 14/1/2014, 8:56 pm
» Sửa chữa Smartphone – nghề thời thượng
by hoangyencps 14/1/2014, 8:52 pm
» Nhật kí ngày 08 tháng 10 năm 2011 !
by c'lesvie 8/8/2013, 6:24 pm
» Lựa chọn trung tâm luyện thi: tiêu chí nào?
by tongphuong 16/5/2013, 3:21 pm
» [Image]Tổng hợp cổng trại các lớp
by nguyendinhlich23 8/2/2013, 4:36 pm
» Bí mật áo trắng
by dongphuchk 1/10/2012, 4:42 pm
» Kí ức những ngày mưa_BDH
by zozo 26/5/2012, 12:13 am
» Music and Lyric (Như khúc tình ca) - Bạch Dương
by ooyeuem00 2/5/2012, 2:54 pm
» Mot Chut Hoi Uc Tuoi Hoc Tro`
by Thanh_Luan.chel 3/4/2012, 5:58 pm
» Ngoài kia ai còn biết tên…
by Bạch Dương 3/4/2012, 11:39 am
» Cách mạng giáo dục: “Xét xử” những lỗi nhỏ và “hành quyết” những sai lầm lớn
by Bạch Dương 3/4/2012, 10:50 am
» Truyện ngắn: Về ngồi lại bên đời
by Bạch Dương 3/4/2012, 10:46 am
» [a2k47 ảnh] những ngày cuối năm học
by a2k47 28/3/2012, 7:05 pm
» hôm 26-3 qua trường
by a2k47 28/3/2012, 6:56 pm
» Tin buồn ...!!!
by a2k47 28/3/2012, 6:50 pm
» Lớp nào thành công nhất Bắc Duyên Hà 2010?
by honey_smile0206 27/3/2012, 1:13 am
» 10 cách thư giãn và giảm stress hiệu quả
by sinhdaphu 26/3/2012, 9:56 pm
» ĐH Vinh mở thêm ngành Kỹ thuật điều khiển và tự động hóa
by sinhdaphu 26/3/2012, 9:53 pm
Thống Kê
Hiện có 1 người đang truy cập Diễn Đàn, gồm: 0 Thành viên, 0 Thành viên ẩn danh và 1 Khách viếng thăm :: 1 BotKhông
Số người truy cập cùng lúc nhiều nhất là 534 người, vào ngày 23/9/2011, 7:39 pm
LIKE
Dân CNTT giúp đỡ
+4
Bạch Dương
EvenSteven
a2k46_bien
MSW
8 posters
DIỄN ĐÀN HỌC SINH SINH VIÊN THPT BẮC DUYÊN HÀ :: Sưu tầm, chia sẽ :: Lĩnh vực đời sống :: Công nghệ số
Trang 1 trong tổng số 1 trang
Dân CNTT giúp đỡ
Mình cần nhờ một số cao thủ tin học giải giúp Tt này: Lập trình tìm số hình vuông có trong hình vuông diện tích NxN (cạnh = N) biét hình này được chia làm NxN ô vuông nhỏ????
MSW- Hạ sĩ
- Khoá học : ?
Lớp : a1
Tổng số bài gửi : 9
BDH-Coins : 55921
Danh vọng : 0
Ngày tham gia diễn đàn : 02/06/2010
Re: Dân CNTT giúp đỡ
lập trình C++ hay pascal bạn?
a2k46_bien- Trung úy
- Khoá học : 46
Lớp : a2
Tổng số bài gửi : 102
BDH-Coins : 56133
Danh vọng : 1
Ngày tham gia diễn đàn : 31/05/2010
Tuổi : 32
Đến từ : Văn Lang
Nghể nghiệp : Sinh viên ĐHM
Re: Dân CNTT giúp đỡ
Mấy cái này chú em lên các diễn đàn IT tìm còn nhanh hơn:))
Trông chờ vào ai
Trông chờ vào ai
EvenSteven- Tân binh !!!
- Khoá học : 45
Lớp : A7
Tổng số bài gửi : 1
BDH-Coins : 54760
Danh vọng : 0
Ngày tham gia diễn đàn : 10/09/2010
Re: Dân CNTT giúp đỡ
Thật ra đâu cần như vậy.
Tôi xin đề ra một giải thuật sau:
Hãy coi hình vuông này là tập hợp của các đường chéo.
Trên mỗi đg chéo, nếu ta lấy 2 ô vuông (k0 cần khác nhau) sẽ thu được một hình vuông. Như vậy tổng số HV có trong HV NxN ô vuông này sẽ bằng tổng số HV thu đc trên mỗi đg chéo trên.
Vậy, ta lập một lớp để tính số HV trên đg chéo
public sealed class Sum_S
{
public static void sum_S( )
{
this.n=n;
this.h = h;
this.f=f;
this.k=k;
this.a=a;
}
public static int sum( int n)
{
h = (n+1)*n/2;
return h;
}
//Phương thức này dùng để tính tổng HV
public static int thv (int k, int n)
{
for(int a=1; a<=n;a++)
{
int f=a;
Sum_S.sum(a);
a=a+f;
k=2a-(n*n+1/2);
}
return k;
}
public int a;
Public int k;
public int f;
public int h;
public int n;
}
Cuối cùng tạo một lớp sử dụng Phương thức Main để gọi tất cả các PT trên, việc này chắc không cần mất nhiều thời gian
Tôi xin đề ra một giải thuật sau:
Hãy coi hình vuông này là tập hợp của các đường chéo.
Trên mỗi đg chéo, nếu ta lấy 2 ô vuông (k0 cần khác nhau) sẽ thu được một hình vuông. Như vậy tổng số HV có trong HV NxN ô vuông này sẽ bằng tổng số HV thu đc trên mỗi đg chéo trên.
Vậy, ta lập một lớp để tính số HV trên đg chéo
public sealed class Sum_S
{
public static void sum_S( )
{
this.n=n;
this.h = h;
this.f=f;
this.k=k;
this.a=a;
}
public static int sum( int n)
{
h = (n+1)*n/2;
return h;
}
//Phương thức này dùng để tính tổng HV
public static int thv (int k, int n)
{
for(int a=1; a<=n;a++)
{
int f=a;
Sum_S.sum(a);
a=a+f;
k=2a-(n*n+1/2);
}
return k;
}
public int a;
Public int k;
public int f;
public int h;
public int n;
}
Cuối cùng tạo một lớp sử dụng Phương thức Main để gọi tất cả các PT trên, việc này chắc không cần mất nhiều thời gian
Re: Dân CNTT giúp đỡ
Khó hiểu. viết nốt đi
Vietnamnet.vn- Hạ sĩ
- Khoá học : ?
Lớp : ?
Tổng số bài gửi : 9
BDH-Coins : 55284
Danh vọng : 0
Ngày tham gia diễn đàn : 26/07/2010
Re: Dân CNTT giúp đỡ
bài này em hiểu chết liền
trantiendat_a9k49- Thượng Tá
- Tên đầy đủ : Dân Chơi Phố Mẹo
Khoá học : 49
Lớp : A9
Chuyên môn : Toán - Tin
Tổng số bài gửi : 495
BDH-Coins : 58167
Danh vọng : 24
Ngày tham gia diễn đàn : 05/03/2010
Tuổi : 29
Đến từ : Mẹo City
Nghể nghiệp : Học Sinh Yêu CNTT
Phương châm sống : Phận Làm Trai Gõ Phím Bình Thiên Hạ....Chí Anh Hùng Click Chuột Định Giang Sơn
Re: Dân CNTT giúp đỡ
Phần còn lại như sau: ta lập một class tester để sử dụng các phương thức từ lớp Sum_S. (bạn có thể để sum_s đánh dấu là static hoặc nếu MSW muốn tạo đối tươgj hay ko thì..tuỳ)
public class nhap
{
public void nhap()
{
this.n = n
}
public int nhapn()
{
System.Console.WriteLine ("nhap n");
n = System.Console.ReadLine();
return n;
}
public int n;
}
public static class Sum_S
{
public void main()
{
Sum_S t= new Sum_S();
nhap n= new nhap();
int a= n.nhapn;
t.thv (a);
System.Console.WriteLine ("Vay so hv la: {0}";a);
}
}
BÀI NÀY CÓ THỂ CÒN NHIỀU SAI XÓT TRONG QUÁ TRÌNH VIẾT CHỮ MONG BẠN THÔNG CẢM, LÂU LẮM RỒI TÔI MỚI LÀM MẤY BÀI LT NÀY
public class nhap
{
public void nhap()
{
this.n = n
}
public int nhapn()
{
System.Console.WriteLine ("nhap n");
n = System.Console.ReadLine();
return n;
}
public int n;
}
public static class Sum_S
{
public void main()
{
Sum_S t= new Sum_S();
nhap n= new nhap();
int a= n.nhapn;
t.thv (a);
System.Console.WriteLine ("Vay so hv la: {0}";a);
}
}
BÀI NÀY CÓ THỂ CÒN NHIỀU SAI XÓT TRONG QUÁ TRÌNH VIẾT CHỮ MONG BẠN THÔNG CẢM, LÂU LẮM RỒI TÔI MỚI LÀM MẤY BÀI LT NÀY
Re: Dân CNTT giúp đỡ
sorry đã lật lại topic đã lâu, nhưng em muốn xem lời giải của em có đúng ko
uses crt;
var S:integer;
i,j,n:integer;
Begin
Write('nhap n: '); Readln(N);
if n=1 then S:=1
Else
begin
S:=N*N+1; { +1 là cái hình vuông to nh?t}
if N=2 then Write('so hv là: ',S)
else
begin
For i:=2 to N do
for j:=2 to N do
S:=S+1;
Write('so hv là: ',S);
end;
end;
Readln;
end.
Em chẳng biết kiểu thuật toán thía nào, đây là nhìn hình đoán qui luật :d
uses crt;
var S:integer;
i,j,n:integer;
Begin
Write('nhap n: '); Readln(N);
if n=1 then S:=1
Else
begin
S:=N*N+1; { +1 là cái hình vuông to nh?t}
if N=2 then Write('so hv là: ',S)
else
begin
For i:=2 to N do
for j:=2 to N do
S:=S+1;
Write('so hv là: ',S);
end;
end;
Readln;
end.
Em chẳng biết kiểu thuật toán thía nào, đây là nhìn hình đoán qui luật :d
Re: Dân CNTT giúp đỡ
Thấy nó ra kết qua có vẻ khả quan nên post thử mợi người xem xét, đúng thanks hộ em một phát lấy khích lệ
Re: Dân CNTT giúp đỡ
Ý tưởng của em là khá thông minh. Ngay khi đọc bài, người ta đã hiểu em định làm gì. Em coi HV đó là trục tọa đọvwois i là chiều dài và j là chiều rộng, với mỗi i=j ta có một hình vuông, và cho 2 chỉ số này chạy rồi đếm hình
Nếu để ý kỹ em sẽ thấy lỗi sai của mình mà chưa cần xem kết quả
Em hãy nhìn câu lệnh
For i:=2 to N do
for j:=2 to N do
S:=S+1;
Ý tuởng của câu lệnh này là đếm. 2 vòng lặp lồng nhau I chạy từ 2 đến N, J chạy từ 2 đến N, thì S tăng một đơn vị. Ban đầu, người ta nghĩ đó là đúng. Nhưng thật ra ko phải vậy. Bởi lẽ với 2 vòng lặp lồng nhau như vậy, i chạy n-1 lần, j chạy n-1 lần, sẽ có tất cả (N-1)^2 lần tăng đơn vị
Vậy có thể thay cả đoạn lênh lặp dài và tốn quá nhiều dung lượng và thời gian kia chỉ bằng câu lệnh
S:=S+(N-1)^2 (!?)
Như vậy chả lẽ đáp án bài toán lại là S=N*N+1+(N-1)^2? Như thế thì cần gì viết chương trình
Đây là một bài toán tương đối đau đầu. nhưng không phải không có cách. làm sao để đếm đủ số hình vuông mà không xót cái nào?
Theo cách giải mà anh đưa ra:
Hãy coi hình vuông này là tập hợp của các đường chéo.
Trên mỗi đg chéo, nếu ta lấy 2 ô vuông (k0 cần khác nhau) sẽ thu được một hình vuông. Như vậy tổng số HV có trong HV lớn này sẽ bằng tổng số HV thu đc trên mỗi đg chéo trên.
Vậy, ta lập một lớp để tính số HV trên đg chéo
Trong pascal, hãy thay một lớp của C# bằng một hàm.
Em hãy quan sát thử bàn cờ vua, sẽ thấy có các đường chéo theo đường đi của quân Tịnh chạy từ ô đầu đến ô cuối cùng, cứ lấy hai ô trên mỗi đường chéo, ta thu được 1 hình vuông. Bằng cách đó có thể thu được tất cả các hình vuông trong toàn bàn cờ
Cách 2 hay hơn rất nhiều, nhưng người ta sẽ bắt phân tích thuật toán:
Với mỗi hình vuông cạnh NxN, ta thu được 1 hình vuông
Với mỗi hình vuông cạnh (N-1)x(N-1), ta thu được 4 hình vuông
Với mỗi hình vuông cạnh (N-2)x(N-2), ta thu được 9 hình vuông
...
Với mỗi hình vuông cạnh 2x2, ta thu được (N-1)^2 hình vuông
Với mỗi hình vuông cạnh 1x1, ta thu được N^2 hình vuông
Như vậy tổng số hình vuông sẽ bằng những con số thu được cộng lại
Chứng minh thuật toán này rất đơn giản, chỉ bằng những kiến thức hình học nhỏ. Em thử viết chương trình đi
Nếu để ý kỹ em sẽ thấy lỗi sai của mình mà chưa cần xem kết quả
Em hãy nhìn câu lệnh
For i:=2 to N do
for j:=2 to N do
S:=S+1;
Ý tuởng của câu lệnh này là đếm. 2 vòng lặp lồng nhau I chạy từ 2 đến N, J chạy từ 2 đến N, thì S tăng một đơn vị. Ban đầu, người ta nghĩ đó là đúng. Nhưng thật ra ko phải vậy. Bởi lẽ với 2 vòng lặp lồng nhau như vậy, i chạy n-1 lần, j chạy n-1 lần, sẽ có tất cả (N-1)^2 lần tăng đơn vị
Vậy có thể thay cả đoạn lênh lặp dài và tốn quá nhiều dung lượng và thời gian kia chỉ bằng câu lệnh
S:=S+(N-1)^2 (!?)
Như vậy chả lẽ đáp án bài toán lại là S=N*N+1+(N-1)^2? Như thế thì cần gì viết chương trình
Đây là một bài toán tương đối đau đầu. nhưng không phải không có cách. làm sao để đếm đủ số hình vuông mà không xót cái nào?
Theo cách giải mà anh đưa ra:
Hãy coi hình vuông này là tập hợp của các đường chéo.
Trên mỗi đg chéo, nếu ta lấy 2 ô vuông (k0 cần khác nhau) sẽ thu được một hình vuông. Như vậy tổng số HV có trong HV lớn này sẽ bằng tổng số HV thu đc trên mỗi đg chéo trên.
Vậy, ta lập một lớp để tính số HV trên đg chéo
Trong pascal, hãy thay một lớp của C# bằng một hàm.
Em hãy quan sát thử bàn cờ vua, sẽ thấy có các đường chéo theo đường đi của quân Tịnh chạy từ ô đầu đến ô cuối cùng, cứ lấy hai ô trên mỗi đường chéo, ta thu được 1 hình vuông. Bằng cách đó có thể thu được tất cả các hình vuông trong toàn bàn cờ
Cách 2 hay hơn rất nhiều, nhưng người ta sẽ bắt phân tích thuật toán:
Với mỗi hình vuông cạnh NxN, ta thu được 1 hình vuông
Với mỗi hình vuông cạnh (N-1)x(N-1), ta thu được 4 hình vuông
Với mỗi hình vuông cạnh (N-2)x(N-2), ta thu được 9 hình vuông
...
Với mỗi hình vuông cạnh 2x2, ta thu được (N-1)^2 hình vuông
Với mỗi hình vuông cạnh 1x1, ta thu được N^2 hình vuông
Như vậy tổng số hình vuông sẽ bằng những con số thu được cộng lại
Chứng minh thuật toán này rất đơn giản, chỉ bằng những kiến thức hình học nhỏ. Em thử viết chương trình đi
Re: Dân CNTT giúp đỡ
Đừng bao h nghi ngờ khả năng của BDHers rồi xem những người khác giỏi hơn mình, nếu bạn không giúp được thì đừng comment vào topic của người khác như thế và comment kiểu xem thường khả năng của BDHers như thế thì càng không nênEvenSteven đã viết:Mấy cái này chú em lên các diễn đàn IT tìm còn nhanh hơn:))
Trông chờ vào ai
Re: Dân CNTT giúp đỡ
Ah đúng rùi,e nhầm/sai, Cách đường chéo của anh hay thiệt đấy.Thanks
-Giả sử đường chéo của hình vuông nhỏ nhất là 1 đv (là đường chéo của hv có cạnh =1)
Đơn giản là chỉ cần tính số đường chéo có chiều dài 2,3,.. và cộng số đường chéo lại
ta thấy trong hinh có: 1^2 đường chéo có độ dài N đv
2^2 ............................ N-1 đv
3^2 ............................ N-2 đv
...................................
(N-1)^2 ............................. 2 đv
N^2 ....................................1 đv
=> tổng số hình vuông là S=1+2^2+3^2+.....+N^2
dùng 1 vong for là xong: for i:=1 to N do S:=S+i*i;
Liệu cái bài lập phương có làm đc như thế này ko anh Đức Anh
-Giả sử đường chéo của hình vuông nhỏ nhất là 1 đv (là đường chéo của hv có cạnh =1)
Đơn giản là chỉ cần tính số đường chéo có chiều dài 2,3,.. và cộng số đường chéo lại
ta thấy trong hinh có: 1^2 đường chéo có độ dài N đv
2^2 ............................ N-1 đv
3^2 ............................ N-2 đv
...................................
(N-1)^2 ............................. 2 đv
N^2 ....................................1 đv
=> tổng số hình vuông là S=1+2^2+3^2+.....+N^2
dùng 1 vong for là xong: for i:=1 to N do S:=S+i*i;
Liệu cái bài lập phương có làm đc như thế này ko anh Đức Anh
Re: Dân CNTT giúp đỡ
Uhm. Đúng. Cách dđường chéo chỉ áp dụng trong không gian 2 chiều (mặt phẳng). Cách thứ hai sẽ áp dụng tổng quát hơn (kể cả với 4 chiều không gian: V = [vt, vx, vy, vz] = [vt, v])
Tức là với hình lập phương, đếm lần lượt
Với mỗi hình LP cạnh NxN, ta thu được 1 hình LP
Với mỗi hình LP cạnh (N-1)x(N-1)x(N-1), ta thu được 8 hình LP
Với mỗi hình LP cạnh (N-2)x(N-2)x(N-2), ta thu được 27 hình LP
...
Với mỗi hình LP cạnh 2x2x2, ta thu được (N-1)^3 hình LP
Với mỗi hình LP cạnh 1x1x1, ta thu được N^3 hình LP
Vậy tổng số hình :LP tính là: N^3 + (N-1)^3 + (N-2)^3 + ... + 2^3+ 1
Để có điểm cao nhất thì bài này nên dùng đệ quy (chứ ko dùng vòng lặp)
Còn Bài C# trên nói về cách đường chéo của bàn cờ:
public sealed class Sum_S
{
public static void sum_S( )
{
this.n=n;
this.h = h;
this.f=f;
this.k=k;
this.a=a;
}
public static int sum( int n)
{
h = (n+1)*n/2;
return h;
}
//Phương thức này dùng để tính tổng HV
public static int thv (int k, int n)
{
for(int a=1; a<=n;a++)
{
int f=a;
Sum_S.sum(a);
a=a+f;
k=2a-(n*n+1/2);
}
return k;
}
public int a;
Public int k;
public int f;
public int h;
public int n;
}
Đó là lớp tính số hình vuông trên 1 đường chéo
Với không gian 3 chiều mà dùng cách chéo, em phải nghĩ đến "mặt phẳng chéo", như thế rất phức tạp
Tức là với hình lập phương, đếm lần lượt
Với mỗi hình LP cạnh NxN, ta thu được 1 hình LP
Với mỗi hình LP cạnh (N-1)x(N-1)x(N-1), ta thu được 8 hình LP
Với mỗi hình LP cạnh (N-2)x(N-2)x(N-2), ta thu được 27 hình LP
...
Với mỗi hình LP cạnh 2x2x2, ta thu được (N-1)^3 hình LP
Với mỗi hình LP cạnh 1x1x1, ta thu được N^3 hình LP
Vậy tổng số hình :LP tính là: N^3 + (N-1)^3 + (N-2)^3 + ... + 2^3+ 1
Để có điểm cao nhất thì bài này nên dùng đệ quy (chứ ko dùng vòng lặp)
Còn Bài C# trên nói về cách đường chéo của bàn cờ:
public sealed class Sum_S
{
public static void sum_S( )
{
this.n=n;
this.h = h;
this.f=f;
this.k=k;
this.a=a;
}
public static int sum( int n)
{
h = (n+1)*n/2;
return h;
}
//Phương thức này dùng để tính tổng HV
public static int thv (int k, int n)
{
for(int a=1; a<=n;a++)
{
int f=a;
Sum_S.sum(a);
a=a+f;
k=2a-(n*n+1/2);
}
return k;
}
public int a;
Public int k;
public int f;
public int h;
public int n;
}
Đó là lớp tính số hình vuông trên 1 đường chéo
Với không gian 3 chiều mà dùng cách chéo, em phải nghĩ đến "mặt phẳng chéo", như thế rất phức tạp
Similar topics
» Anh(chị) ak! E đang cần người giúp thiết kế web.Ai đó biết làm ơn giúp e với!!!
» [Cần giúp] Tìm bài hát học trò!!!
» Cần sự giúp đỡ của mọi người đây!!!
» mọi người xem có đẹp ko! có gì giúp tôi cái!
» GIúp mình môn Ngữ Văn
» [Cần giúp] Tìm bài hát học trò!!!
» Cần sự giúp đỡ của mọi người đây!!!
» mọi người xem có đẹp ko! có gì giúp tôi cái!
» GIúp mình môn Ngữ Văn
DIỄN ĐÀN HỌC SINH SINH VIÊN THPT BẮC DUYÊN HÀ :: Sưu tầm, chia sẽ :: Lĩnh vực đời sống :: Công nghệ số
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết