Tháng Mười Hai 23, 2018
Đếm số lượng số nâng cao
Đề bài: Cho một mảng n số nguyên. Đếm xem trong mảng có bao nhiêu số khác nhau và mỗi số xuất hiện bao nhiêu lần trong mảng. Các số trong mảng có độ lớn từ 0 đến 1000. n <= 100.
Đầu vào: Dòng đầu tiên là số nguyên n. Dòng thứ 2 là mảng n số nguyên, các số cách nhau bởi dấu cách.
Đầu ra: Dòng đầu tiên chứa số m là số lượng số khác nhau, m dòng tiếp theo mỗi dòng chứa 2 số cách nhau bởi dấu cách lần lượt là số đó và số lượng xuất hiện của số đó. m dòng này xuất hiện theo thứ tự sao cho các số có thứ tự đúng như dãy ban đầu.
Ví dụ:
input: 4 4 3 3 2 output: 3 4 1 3 2 2 1
Bạn chưa đăng nhập? Đăng nhập để Submit ngay!
14 Comments
Add a Comment
Bạn phải đăng nhập để gửi phản hồi.
Ad cho hỏi, sao mình up code từ sáng đến bây giờ toàn “In Queue” vậy ạ?
Mình chạy trên máy thì ok rồi.
Em bị Error connect suốt ạ.
Xin lỗi bạn, hiện tại hệ thống đã hoạt đọng bình thường rồi nhé.
cái test 3 số không em chạy trên code block giống như cái output của a mà sao chạy trên đây nó khác vậy ạ?
Anh nghĩ do code của em có vấn đề ở đoạn này khi g = -1 thì làm gì có a[g] do vậy hệ thống dừng tại đây và em chỉ in ra dòng đầu tiên là số 1.
for(g=-1;g < i;g++){
if(a[i]==a[g]){
count1=0;
break;
}else
count1=1;
}
chạy trên dev c được mà test lại bị runtime
bạn thử lại hoặc đọc lỗi xem báo gì nhé.
cứ Runtime Error (SIGSEGV) thôi anh, em nghĩ là chạy lâu quá nhứng tối ưu hóa mãi vẫn không đc.
Viết bằng Python 3, bài nâng cao còn dễ hơn bài bình thường nữa
cho em xin code ngắn gọn hơn tí được k ạ
bài làm của em vừa dài mà vừa rối mắt quá
mặc dù đã accepted 🙁
#include
int main(){
int i, j, n, tg;
scanf(“%d”, &n);
int a[n], b[n];
for(i = 0; i < n; i++){
scanf("%d", &a[i]);
b[i] = a[i];
}
for(i = 0; i < n; i++){ // sap xep tang dan de dem so luong so khac nhau
for(j = i+1; j a[j]){
tg = a[i];
a[i] = a[j];
a[j] = tg;
}
}
}
int dem = 1, Index = 1;
for(i =0; i < n-1; i++){ // dem so luong cap
if(a[i] – a[i+1] != 0) dem++;
}
printf("%d\n", dem);
// xet cac so theo mang b[i];
for(i = 0; i < n; i++){
Index = 1;
for(j = i+1; j < n; j++){
if(b[i] != 1001 && b[j] == b[i] ){
Index++;
b[j] = 1001;
}
}
if(b[i] != 1001) printf("%d %d\n", b[i], Index);
}
return 0;
}
Bạn có thể dùng cách đánh dấu mảng nhé.
tuc la nhu the nao a
Bài này hoàn toàn giống bài đếm số lượng số . Ad sửa lại bài đếm số lượng số để giảm bớt độ khó nhé!!!
Mình nhầm rồi