代码好吗?
  • 板块学术版
  • 楼主Gold_Ballon
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/12/30 10:51
  • 上次更新2023/12/30 13:37:31
查看原帖
代码好吗?
1137842
Gold_Ballon楼主2023/12/30 10:51
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char a[100][10],b[100][10];
bool d[100];
int len[100],n,k;
bool s(int i,int j,int step,int smix){
	if(step == smix) return a[i][step] > a[j][step];
	if(a[i][step] == a[j][step]) s(i,j,step + 1,smix);
	else return a[i][step] > a[j][step];
}
void f(int step){
	if(step == n){
		for(int i = 0;i < n;i++) printf("%s ",b[i]);
		printf("\n");	
	} 
	else{
		for(int i = 0;i < n;i++){
			if(!d[i]){
				for(int j = 0;j < k;j++){
					b[step][j] = a[i][j];
				}	
				d[i] = true;
				f(step + 1);
				d[i] = false;
			}
		}
	}
}
int main(){
	scanf("%d",&n); 
	for(int i = 0;i < n;i++){
		scanf("%s",a[i]);
		len[i] = strlen(a[i]);
	} 
	for(int i = 0;i < n - 1;i++){
		k = max(len[i],len[i - 1]);
		for(int j = i + 1;j < n;j++){
			if(s(i,j,0,min(len[i],len[j]) - 1)){
				swap(len[i],len[j]);
				swap(a[i],a[j]); 	
			}
		}
	}
	f(0);
	return 0;
}
2023/12/30 10:51
加载中...