1 条题解
-
0
自动搬运
来自洛谷,原作者为

褚橙
没人记得的菜鸡搬运于
2025-08-24 22:37:46,当前版本为作者最后更新于2022-08-05 11:27:17,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
这里是蒟蒻第一次写题解,有错误请多多指教。
思路
第一眼一看就是黄题搜索,再一看,其实是一道普通的模拟。
采用4重循环的方法:
- 前三重循环枚举三给不同的字符串。
- 将字符串组合。
- 最后一个循环判断字符串是否成立。
注:因为输入是按字典序,所以不用再排序。
样例模拟
1. ANA 2. ANA 3. DAR 4. DAR 5. RAD 6. RAD可以写成:
3 1 5 4 D A R 2 A N A 6 R A D代码
#include<bits/stdc++.h> using namespace std; int n=6;//这里n均为6 string a[10]; int main() { for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { for(int k=1;k<=n;k++)//枚举三个数 { if(i==j||j==k||k==i)//判重 { continue; } string x; x=x+a[i][0]+a[j][0]+a[k][0]; string y; y=y+a[i][1]+a[j][1]+a[k][1]; string z; z=z+a[i][2]+a[j][2]+a[k][2]; //分别令 x,y,z 为第一列,第二列,第三列 bool f1=0,f2=0,f3=0; //成功的就可以标记 for(int l=1;l<=n;l++) { if(l==i||l==j||l==k) { continue; } if(a[l]==x&&!f1)//会有重复的记得判重 { f1=1; } else if(a[l]==y&&!f2)//同上 { f2=1; } else if(a[l]==z) { f3=1; } } if(f1&&f2&&f3)//成功了直接输出,并结束 { cout<<a[i]<<endl; cout<<a[j]<<endl; cout<<a[k]<<endl; return 0; } } } } cout<<0<<endl;//未成功的输出0 return 0; }这样就可以AC啦。
- 1
信息
- ID
- 7582
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者