View Code of Problem 126

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<math.h>




int main()
{
	int n, m;
	scanf("%d%d", &n, &m);
	char **a = (char **)malloc((m+1) * sizeof(char *));
	for (int i = 0;i < m;i++) {
		a[i] = (char *)malloc((n+1) * sizeof(char));
	}
	int *b = (int *)malloc(m * sizeof(int));
	for (int i = 0;i < m;i++) {
		b[i] = 0;
	}
	for (int i = 0;i < m;i++) {
		gets(a[i]);
	}
	for (int i = 0;i < m;i++) {
		for (int j = 0;j < n;j++) {
			for (int k = j + 1;k < n;k++) {
				if (a[i][j]>a[i][k])
					b[i]++;
			}
		}
	}
	for (int i = m-1;i>0;i--) {
		int flag = 1;
		for (int j = 0;j < i;j++) {
			if (b[j] > b[j + 1]) {
				int temp = b[j];
				b[j] = b[j + 1];
				b[j + 1] = temp;
				char *t = (char *)malloc(n * sizeof(char));
				strcpy(t,a[j]);
				strcpy(a[j],a[j + 1]);
				strcpy(a[j + 1],t);
			}
		}

	}
	
	for (int i = 0;i < m;i++) {
		printf("%s\n", a[i]);
	}


}

Double click to view unformatted code.


Back to problem 126