3 条题解

  • 2
    @ 2022-7-17 9:06:14
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int n,k,c=1,flag=1,p=0,f1=1,sum=0;
    	string b;
    	cin>>n;
    	k=n-1;
    	int a[n];
    	for(int i=0;i<n;i++)
    	{
    		cin>>a[i];
    	}
    	cin>>p;
    	cout<<p;
    	while(k!=0)
    	{
    		f1=1;
    		for(int i=n-1;i>0;i--)
    		{
    			flag=1;
    			if(a[i-1]>a[i])
    			{
    				swap(a[i],a[i-1]);
    				f1=0;
    				if(i==p&&flag==1)
    				{cout<<"→"<<i-1;
    					b+=i-1+'0';
    					
    					p=i-1;
    					flag=0;
    					sum+=2;
    				}
    				if(i-1==p&&flag==1)	
    				{
    //					cout<<i<<endl;
    					b+=i+'0';
    					cout<<"→"<<i;
    					p=i;
    					flag=0;
    					sum+=2;
    				}
    //				for(int i=0;i<n;i++)
    //		cout<<a[i]<<" ";
    //		cout<<endl;
    			}
    		}
    		k--;
    //		if(f1==1)break;
    	}
    //	cout<<b<<endl;
    //	for(int i=0;i<=sum+1;i++)
    //	cout<<b[i];
    }
    //1 2 2 4 4 7 7 9
    
    
    
    
    
    • 1
      @ 2025-3-7 14:07:00

      简单易懂[大拇指]

      注意,箭头不是“->”,是“→”

      着实被恶心到了

      n = int(input())
      num = list(map(int,input().split()))
      p = int(input())
      s = str(p)+"→"
      for i in range(n):
          flag = True
          for j in range(n-1,i,-1):
              if num[j] < num[j-1]:
                  num[j-1],num[j] = num[j],num[j-1]
                  flag = False
                  if j == p:
                      p-=1
                      s = s+str(p)+"→"
                  elif j-1 == p:
                      p+=1
                      s = s+str(p)+"→"
          if flag:
              break
      print(s[:-1])
      
      
      
      • -2
        @ 2023-7-29 17:08:25

        水题

        #include<bits/stdc++.h>
        
        using namespace std;
        
        int main()
        {
        
            int n;
            cin >>n;
            int a[n];
            for(int i=0; i<n; i++){
                cin >>a[i];
            }
            int k;
            cin >>k;
            cout<<k;
            for(int i=0; i<n; i++){
                for(int j=n-1; j>i; j--){
                    int l=0;
                    if(a[j]<a[j-1]){
                        if(j==k){
                                cout<<"→"<<j-1;
                                l++;
                        }
                        if(j-1==k){
                                cout<<"→"<<j;
                                l--;
                        }
                        if(l>0){k--;}
                        if(l<0){k++;}
                        swap(a[j],a[j-1]);
                    }
                }
            }
        
        	return 0;
        }
        
        • 1

        信息

        ID
        754
        时间
        1000ms
        内存
        256MiB
        难度
        5
        标签
        递交数
        798
        已通过
        332
        上传者