View Code of Problem 126

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;
	}
	char a[100][100];
	for (int i = 0;i < m;i++) {
		scanf("%s",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(100 * sizeof(char));
				strcpy(t, a[j]);
				strcpy(a[j], a[j + 1]);
				strcpy(a[j + 1], t);
			}
		}
                if(flag)
                  break;
 
	}
	
	for (int i = 0;i < m;i++) {
		printf("%s\n", a[i]);
	}
 
 
}

Double click to view unformatted code.


Back to problem 126