2 条题解

  • 0
    #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;
    }
    
    • 0
      @ 2023-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
      上传者