Các anh chị và các bạn cho mình hỏi có cách nào truyền mảng vào hàm mà không làm thay đổi giá trị của mảng sau khi xử lí trong hàm đó ko? xin cảm ơn
Announcement
Collapse
No announcement yet.
Vấn đề về truyền tham biến, tham trị là mảng
Collapse
X
-
Originally posted by truonganpn View PostTạo ra cái mảng mới, copy các phần tử qua rồi truyền cái mảng mới vào
Lần sửa cuối bởi 14520234; Hôm nay lúc 16:45
Comment
-
Originally posted by truonganpn View PostTạo ra cái mảng mới, copy các phần tử qua rồi truyền cái mảng mới vào
Lần sửa cuối bởi 14520234; Hôm nay lúc 16:45
Comment
-
Originally posted by 14520234cách này độ phức tạp e nghĩ không ổn, còn dùng con trỏ thì nó sẽ trỏ về địa chỉ của mảng trc thành ra vẫn bị thay đổi, à e quên nói trước là công việc trong hàm sẽ thực hiện n lần
Thông thường ta truyền mảng vào hàm là để điều chỉnh nó cho phù hợp.
Nếu em không muốn nó thay đổi thì tạo ra bản sao của nó (có thể truyền mảng cũ vào, rồi tạo bản sao ở trong hàm con và thao tác trên mảng con này)Đừng bán rẻ mình...
Mà phải BÁN ĐÚNG GIÁ!!!
Comment
-
Originally posted by 13520747 View PostCách này có gì phức tạp mà không ổn em?
Thông thường ta truyền mảng vào hàm là để điều chỉnh nó cho phù hợp.
Nếu em không muốn nó thay đổi thì tạo ra bản sao của nó (có thể truyền mảng cũ vào, rồi tạo bản sao ở trong hàm con và thao tác trên mảng con này)
Comment
-
Originally posted by 14520234 View PostNếu e có một mảng, cứ mỗi vòng lặp e muốn sử dụng lại mảng ban đàu thì có giải pháp gì không ạ? Tại truyền tham biến mảng trong C khác Pascal quá
Anh vẫn chưa nghĩ ra em làm như thế để làm gì :look_down:Đừng bán rẻ mình...
Mà phải BÁN ĐÚNG GIÁ!!!
Comment
-
Originally posted by 13520747 View PostCụ thể là em làm gì ở trong vòng lặp đó?
Anh vẫn chưa nghĩ ra em làm như thế để làm gì :look_down:
Ý tưởng của e là lặp lại mảng a, tạo thành vòng tròn, có một mảng S tính tổng từ 1-2n.
For từ 1 - n, sort lại mảng s từ i- n+i-1, nếu s[i]-s[i-1] <0 thì điểm đó không phải điểm tốt
Comment
-
Originally posted by 14520234 View PostÀ e đang code bài NKSEQ trên spoj. http://vn.spoj.com/problems/NKSEQ/
Ý tưởng của e là lặp lại mảng a, tạo thành vòng tròn, có một mảng S tính tổng từ 1-2n.
For từ 1 - n, sort lại mảng s từ i- n+i-1, nếu s[i]-s[i-1] <0 thì điểm đó không phải điểm tốt
Comment
-
Originally posted by 14520234 View PostÀ e đang code bài NKSEQ trên spoj. http://vn.spoj.com/problems/NKSEQ/
Ý tưởng của e là lặp lại mảng a, tạo thành vòng tròn, có một mảng S tính tổng từ 1-2n.
For từ 1 - n, sort lại mảng s từ i- n+i-1, nếu s[i]-s[i-1] <0 thì điểm đó không phải điểm tốt
Em thử cách dưới xem
Code:int count_good_position = 0; for(int i = 0; i < n; i++) { int sum = 0; int count = 0; int flag = 1; for(int j = i; count < n; count++) { sum += a[j]; if(sum < 0) { flag = 0; break; } j++; j = j % n; } if (flag == 1) count_good_position++; }
Đừng bán rẻ mình...
Mà phải BÁN ĐÚNG GIÁ!!!
Comment
-
Originally posted by truonganpn View PostĐọc sơ qua đề thì bài này kiểm tra j có phải là "tốt" hay không tốn một lần duyệt mảng, có tổng cộng n cái j trong mảng vậy tốn n lần duyệt mảng. Còn cách của em có n lần sort mảng s. Sort thì chắc chắn lâu hơn rất nhiều so với duyệt nên có vẻ như cách của em không có ổn cho lắm.
E dùng quicksortLast edited by 14520234; 25-10-2014, 09:33.
Comment
-
Originally posted by 13520747 View PostAnh chưa test, nhưng rõ ràng ý tưởng của em "nghe là thấy nản" rồi
Em thử cách dưới xem
Code:int count_good_position = 0; for(int i = 0; i < n; i++) { int sum = 0; int count = 0; int flag = 1; for(int j = i; count < n; count++) { sum += a[j]; if(sum < 0) { flag = 0; break; } j++; j = j % n; } if (flag == 1) count_good_position++; }
Comment
-
Originally posted by 13520747 View PostHọc CTDL đó giờ anh chả biết cái độ phức tạp tính ra sao nữa :salute:
Originally posted by 14520234 View PostTại e tính độ phức tạp chỉ có nlgn
E dùng quicksort
Comment
-
Bài này em có thể dùng QHĐ để tính, ĐPT chỉ khoảng O(N) :
- Gọi F[i] là giá trị nhỏ nhất trong các dãy a[i], a[i] + a[i+1], .. , a[i] + a[i+1] + a[i+2] + .... a[n] + a[1] + a[2] + ... + a[i-1].
- Công thức QHĐ : F[i] = Min(A[i], F[i + 1] + A[i]), i = n-1 -> 1.
Điều kiện để i là 1 vị trí tốt là A[i] > 0 và F[i] > 0Last edited by 12520527; 26-10-2014, 15:55.“ Đơm hoa không kết trái thì có sao?
Là cá thì nhất định phải bơi ư?
Ai bảo cuộc đời là phải sống,
Ai bảo đau khổ rồi cũng sẽ qua,
Ai bảo bài hát là phải có dạo đầu,
Phá vỡ ranh giới để tìm kiếm điều gì đó...”
Comment
Comment