文章目录
- 日志排序
- 重复者
一、日志排序IO链接
本题思路:本题就是根据就是排序的知识点,在sort内部可以使用仿函数来改变此时排序规则。
#include <bits/stdc++.h>const int N=10010;
int n;
std::string logs[N];int main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);while(std::getline(std::cin,logs[n]))if(logs[n].size()) n++;else break;//内部排序sort(logs,logs+n,[&](std::string&a,std::string&b){std::stringstream sstreama(a),sstreamb(b);//将空格分开的字符串读入sa,sb中std::string sa[4],sb[4];for(int i=0;i<4;i++){sstreama>>sa[i];sstreamb>>sb[i];}//如果当前消耗时间相等,则需要判断当前开始时间if(sa[3]==sb[3]) return sa[1]+sa[2]<sb[1]+sb[2];double ta,tb;std::sscanf(sa[3].c_str(),"%lf(s)",&ta);std::sscanf(sb[3].c_str(),"%lf(s)",&tb);return ta<tb;});for(int i=0;i<n;++i) std::cout<<logs[i]<<std::endl;return 0;
}
二、重复者IO链接
本题思路:对于第q层来说我们需要递归找出第q-1层的图形然后将其存储下来然后和原来图形来更新第q层的图形。
#include <bits/stdc++.h>int n;
std::vector<std::string> p;std::vector<std::string> dfs(int k)
{if(k==1) return p;std::vector<std::string> last=dfs(k-1);//找出上一版本的字符串int m=last.size();std::vector<std::string> res(n*m,std::string(n*m,' '));//当前版本串for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(p[i][j]!=' ')for(int x=0;x<m;x++)for(int y=0;y<m;y++)res[i*m+x][j*m+y]=last[x][y];return res;
}int main()
{while(std::cin>>n,n){//清空当前的版本串p.clear();getchar();for(int i=0;i<n;i++){std::string s;std::getline(std::cin,s);p.push_back(s);}int q;std::cin>>q;auto res=dfs(q);for(auto& str:res)std::cout<<str<<std::endl;}return 0;
}