NC19907. [CQOI2007]三角形TRI
描述
输入描述
输入仅一行,即三角形的编号,以T开头,后面有n个1到4的数字。仅最后一个数字可能为4。
输出描述
输出每行一个三角形编号,按字典序从小到大排列。
示例1
输入:
T312
输出:
T314 T34 T4
C++(g++ 7.5.0) 解法, 执行用时: 2ms, 内存消耗: 408K, 提交时间: 2023-01-02 21:59:25
#include <bits/stdc++.h> using namespace std; string s; int main() { cin >> s; string b = s.substr(0, s.size() - 1); if(s[s.size()-1]=='4') { cout<<b<<1<<'\n'; cout<<b<<2<<'\n'; cout<<b<<3<<'\n'; } else { int len=s.size(); for (int i = len - 1; i > 0 && i >= len - 3; i--) { if (s[i] == s[i + 1]) { len--; continue; } cout<<s.substr(0, i)<<'4'<< endl; } } return 0; }
C++ 解法, 执行用时: 3ms, 内存消耗: 504K, 提交时间: 2021-06-22 16:41:27
#include<bits/stdc++.h> using namespace std; int main() { int i,n,V[5]={0}; char R[55]; scanf("%s",R+1),n=strlen(R+1); if(R[n]=='4')for(i=1;i<4;i++)R[n]=i+'0',printf("%s\n",R+1); else { for(i=n;i>=2;i--) { if(V[R[i]-'0'])continue; V[R[i]-'0']=1; R[i]='4',R[i+1]='\0'; printf("%s\n",R+1); } } return 0; }
Python3 解法, 执行用时: 42ms, 内存消耗: 4696K, 提交时间: 2022-03-27 14:49:25
ori = input() l = list(ori[1:]) if l[-1] == "4": for i in range(1, 4): l[-1] = str(i) print("T" + "".join(l)) else: p = set() for i in range(len(l)): r = l[:len(l)-i] if r[-1] in p: continue p.add(r[-1]) r[-1] = "4" print("T" + "".join(r))
pypy3 解法, 执行用时: 60ms, 内存消耗: 40092K, 提交时间: 2021-06-23 10:41:31
s = input() if s[-1] == '4': for i in range(1, 4): print(s[: -1] + str(i)) else: vis = set() for i in range(len(s) - 1, 0, -1): if s[i] not in vis: vis.add(s[i]) print(s[: i] + '4')