01/10/2018, 12:31
Hộ em bài này với ạ. Khi sub không hiểu sao chỉ được 70 ạ
Nguồn: http://www.spoj.com/PROTRAIN/problems/PROT3H/
Cho mảng (a, n) gồm các số nguyên. In ra các phần tử khác nhau trong dãy và số lần xuất hiện của chúng.
Input:
- Dòng 1 chứa số nguyên n (0<n<=1000) là độ dài dãy a.
- Dòng 2 chứa n số nguyên a[0], a[1],…, a[n-1] là giá trị các phần tử của dãy (|a[i]|<=10000, i=0,…n-1)
Output:
- Dòng 1 in ra số nguyên dương S là số lượng các phần tử khác nhau trong dãy
- S dòng tiếp theo, mỗi dòng in ra 2 số nguyên lần lượt là giá trị của phần tử trong dãy a và số lần xuất hiện của nó.
VD:
Input:
5
1 2 2 1 3
Output:
3
1 2
2 2
3 1
Input:
4
1 1 1 1
Output:
1
1 4
Bài làm:
#include<stdio.h>
void sapXep(int a[], int n){
int i , j;
for(i=0 ; i<=n-2 ;i++){
for(j=i +1 ; j<= n-1; j++){
int tmp ;
if(a[i] > a[j]){
tmp = a[i];
a[i] = a[j];
a[j] = tmp ;
}
}
}
}
main(){
int a[1000], n, count = 1 ;
int i, j;
scanf("%d", &n);
for(i= 0 ; i<= n-1 ;i++)
scanf("%d", &a[i]);
sapXep(a,n);
for(i=0 ; i<= n-2 ;i++){
for(j=i+1 ; j<= n -1 ;j++){
if(a[i] != a[j]){
count++;
break;
}
}
i = j ;
}
printf("%d
", count);
for(i=0; i<= n-1 ; i++){
count = 1 ;
for(j= i+1 ; j<= n-1 ; j++){
if(a[i] == a[j]){
count++ ;
}
else
break;
}
printf("%d %d", a[i], count);
printf("
");
i = j - 1;
}
}
Bài liên quan
Bạn xem lại cách đặt title cho câu hỏi sao cho người khác nhìn vào không thấy phản cảm.
Test thọt:
em không thấy sai chỗ nào a ơi
Bạn chạy test của mình chưa?
Đọc kĩ đoạn này nhé.
nhập dãy, sắp xếp, tính dãy có bao nhiêu giá trị khác nhau và mỗi giá trị lặp lại bao nhiêu lần ?
bạn post code phải nói code để làm gì với lỗi ở đâu chứ ko ai giúp đc
Mình thấy code khá dễ hiểu mà. Cái chính là thớt code phức tạp quá.
mình nói cái mình nghĩ là cơ bản khi hỏi bài thôi, còn code dễ hiểu nhưng chắc gì đã đúng với việc mà bạn kia muốn làm
2 posts were merged into an existing topic: Topic chứa các reply được cho là off-topic - version 2