2 条题解
-
0凌艺樽 (Lawrence劳伦斯) LV 9 @ 2023-9-16 18:06:42
#include <iostream> #include <bits/stdc++.h> using namespace std; const int N=1e7+10; const int INF=0x3f3f3f3f; char s[150]; int u,d,l,r; void camp(char x) { if(x=='U') { u++; } if(x=='D') { d++; } if(x=='L') { l++; } if(x=='R') { r++; } } int main() { int n; cin>>n; cin>>s; int len=strlen(s); for(int i=0;i<len;i++) { camp(s[i]); } if(abs(u-d)+abs(l-r)==0) { cout<<n; } else { n=n-abs(u-d)-abs(l-r); cout<<n; } return 0; }
-
02023-9-4 21:45:38@
因为有一些可以不走,但又要尽量走的多
例如现在往左走4步,往右走5步,那么如果要回到原为,就必须保证左的跟右的走的一样多,那么这样的话极限值就是左4右4
根据这个原理就可以写出代码了
#include <bits/stdc++.h> //#pragma GCC optimize(2) //#define int long long #define endl '\n' using namespace std; string s; int n; int a,b,c,d; signed main() { ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); cin >> n; cin >> s; int ans = 0; for(int i = 0; i < n; i++) { if(s[i]=='L')a++; else if(s[i]=='R')b++; else if(s[i]=='U')c++; else if(s[i]=='D')d++; } ans = min(a,b)+min(c,d); ans*=2; cout << ans << endl; return 0; }
- 1
信息
- ID
- 2299
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 265
- 已通过
- 84
- 上传者