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 3Output:
3
1 2
2 2
3 1Input:
4
1 1 1 1Output:
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\n", 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("\n");
i = j - 1;
}
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?