社区讨论
发现一个比较简单的写法(已确认)
P1012[NOIP 1998 提高组] 拼数参与者 8已保存回复 48
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 46 条
- 当前快照
- 1 份
- 快照标识符
- @mkj351ew
- 此快照首次捕获于
- 2026/01/18 09:56 上个月
- 此快照最后确认于
- 2026/01/21 15:30 4 周前
这个代码的逻辑就是每次存下可以插入的位置,然后一一尝试插入,取最大。
CPP#include<bits/stdc++.h>
using namespace std;
int n,cnt=1;
string a[25],b[25],pb[25],c[25],res,cmp;
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
b[1]=a[1];
for(int i=2;i<=n;i++){
for(int j=1;j<=cnt;j++) pb[j]=b[j];
res="";
for(int pos=1;pos<=cnt+1;pos++){
for(int j=1;j<=cnt+1;j++){
if(j<pos) c[j]=pb[j];
if(j==pos) c[j]=a[i];
if(j>pos) c[j]=pb[j-1];
}
cnt++,cmp="";
for(int j=1;j<=cnt;j++) cmp+=c[j];
if(cmp>res){
res=cmp;
for(int j=1;j<=cnt;j++) b[j]=c[j];
}
cnt=cnt-1;
}
cnt++;
}
for(int i=1;i<=cnt;i++) cout<<b[i];
}
AC了,https://www.luogu.com.cn/record/257946648。
跑的也不算慢,而且思维难度很低,差不多橙黄。
如果我饭堂了不要喷我qwq.
回复
共 48 条回复,欢迎继续交流。
正在加载回复...