小A学长最近痴迷于我的世界,在我的世界之中食物发挥着很重要的作用,因此小A学长种植了一大片小麦田。一天,小A学长的小麦田被苦力怕打乱了,但小A学长及时将苦力怕消灭以至于苦力怕只是将麦田的行顺序打乱,小A学长想知道他原来的小麦田是什么样子,请你帮助小A学长找回小麦田原来的样子。
已知小A学长有一块 𝑛n ×× 𝑛n 的小麦田,由于小A学长的小麦田紧邻高山,因此并不是所有的耕地都种植了小麦,但可以确保的是每一行一定都有种植的小麦,种植的小麦一定是靠左并且连续的。小麦将会以数字 00 到 99 的形式表现出来,数字 00 到 99 则代表着成熟的小麦生长程度。(0最小,9最大)
已知小A学长的小麦田的每一行是按照成熟程度非递减的顺序来排列的,也就是说前一行整体的成熟程度一定比后一行小或相等。成熟程度是按照每一行从前往后去比较的,比如先比较两个行的第一个小麦的成熟程度,将成熟程度较小的放在前面,若成熟程度相同则依次进行。在比较过程中如果存在一行已经没有小麦了而另外一行还有小麦的情况,则默认没有小麦的这一行生长程度低。
小A学长还记得每一行小麦的数量,请你还原小A学长的小麦田。
输入
第一行一个数字 𝑛n,表示小A学长小麦田的大小。
第三行给出n个数字串,代表被炸乱的小麦田,数字串之间有空格。
输出
输出 𝑛n ×× 𝑛n 的矩阵,代表小A学长的小麦田。若此处没有小麦,则输出 𝑋X。
样例
输入数据 1
10
1 12 123 2345 34567 45678 5678 678 78 8
Copy
输出数据 1
1XXXXXXXXX
12XXXXXXXX
123XXXXXXX
2345XXXXXX
34567XXXXX
45678XXXXX
5678XXXXXX
678XXXXXXX
78XXXXXXXX
8XXXXXXXXX
Copy
输入数据 2
10
99 888 7777 66666 65556 55555 50001 00000 10000 90000
Copy
输出数据 2
00000XXXXX
10000XXXXX
50001XXXXX
55555XXXXX
65556XXXXX
66666XXXXX
7777XXXXXX
888XXXXXXX
90000XXXXX
99XXXXXXXX
Copy
数据范围
(1≤𝑛≤102)(1≤n≤102)
(1≤𝑎𝑖≤𝑛)(1≤ai≤n)
#include<stdio.h>
#include<string.h>
struct p{
char s[1000010];
}t[110],k;
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s",&t[i].s);//printf("%s\n",t[i].s);
}
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(strcmp(t[i].s,t[j].s)>0){//结构体排序
struct p ret=t[i];
t[i]=t[j];
t[j]=ret;
}
}
}
for(int i=0;i<n;i++){
printf("%s",t[i].s);
if(strlen(t[i].s)<n){
for(int j=0;j<n-strlen(t[i].s);j++){
printf("X");
}
}
printf("\n");
}
return 0;
}