<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      harumakigohan686

      藍(lán)橋杯真題初探:CP1102. 完美的代價

      題目描述:

      回文串,是一種特殊的字符串,它從左往右讀和從右往左讀是一樣的。崔學(xué)長認(rèn)為回文串才是完美的(但呂學(xué)弟不這樣認(rèn)為)。現(xiàn)在給你一個串,它不一定是回文的,請你計算最少的交換次數(shù)使得該串變成一個完美的回文串。

      交換的定義是:交換兩個相鄰的字符

      例如mamad

      第一次交換 ad : mamda

      第二次交換 md : madma

      第三次交換 ma : madam (回文!完美!)

      輸入格式

      第一行是一個整數(shù)N,表示接下來的字符串的長度(N <= 8000)

      第二行是一個字符串,長度為N.只包含小寫字母

      輸出格式

      如果可能,輸出最少的交換次數(shù)。

      否則輸出Impossible

      解題思路

      首先我們要明白回文字符串的具體形成規(guī)律:當(dāng)字符串中,字符的個數(shù)是奇數(shù)的超過1個時,不能變成完美回文串。比如:字符串a(chǎn)ddbbccc,a有1個,b有2個,c有3個,d有2個。其中,a和c的個數(shù)是奇數(shù),所以不能變成完美回文串。(通過這個來判斷是不是能形成)

      然后就是交換的方面,本人提供兩種解法(其實(shí)都是在那個判斷是否ok方面的兩種思路):

      解題代碼

      #include <stdio.h>
      #include <ctype.h>
      #include <string.h>
      #include <math.h>
      void swap(char a,char b);
      int main()
      {
          long int n;
          scanf("%ld",&n);
          getchar();
          char a[8005];
          gets(a);
          int k=n-1;
          int flag=0;
         long int count=0;
          for(int i=0;i<k;i++)//從第一個開始搜索
          {
              for(int j=k;j>=i;j--)
              {
                  if(j==i)//表示沒有符合條件的字符,該字符出現(xiàn)次數(shù)是奇數(shù)
                  {
                      if(flag==1||n%2==0)
                      {
                          printf("Impossible\n");
                          return 0;
                      }
                      flag=1;
                      count=count+n/2-i;
                  }
                  else if(a[i]==a[j])
                  {
                      for(int u=j;u<k;u++)
                      {
                          swap(a[u],a[u+1]);
                          count++;
                      }
                      k--;
                      break;
                  }
              }
      
          }
          printf("%ld",count);
          return 0;
      }
      
      void swap(char a,char b)
      {
          char temp;
          temp=a;
          a=b;
          b=temp;
      }
      這里是分割線~
      #include <stdio.h>
      #include <stdlib.h>
       
      int changes(char s[],char x,int n); 
      char x='0'; 
      int main(void) 
      { 
         int n,i,k=0,b[26]={0},j; 
         char s[8000]={0}; 
         scanf("%d",&n); 
         getchar(); 
         for(i=0;i<n;i++) 
             scanf("%c",&s[i]); 
         for(i=0;i<n;i++)     
         {  
             j=s[i]-'a';  //判斷26個小寫字母在字符串中分別出現(xiàn)了多少次
      	   b[j]++; 
         } 
         for(j=0;j<26;j++)
         { 
             if(b[j]%2!=0)   //判斷有幾個字符在字符串中出現(xiàn)了奇數(shù)次 
      	   { 
      	       k++; 
      		   x=j+'a';
      		   
      	  } 
         } 
         if(k>=2) 
             printf("Impossible\n"); 
         else 
             printf("%d\n",changes(s,x,n));  //調(diào)用交換字符函數(shù)
       
         system("pause");
         return 0; 
      }  
       
      int changes(char s[],char x,int n) 
      { 
          int i,change=0,j,k; 
      	for(i=0;i<n/2;i++)
      	{ 
      	   if(s[i]==x)    //x是字符串中唯一一個出現(xiàn)奇數(shù)次的字符
      	   { 
      	       for(j=i;j<n-i-1;j++) 
      		   {
      		       if(s[n-i-1]==s[j]) 
      		           break; 
      		   }
      		   change+=j-i; 
      		   for(k=j;k>i;k--) 
      		       s[k]=s[k-1]; 
      		   s[i]=s[n-i-1]; 
      	   }
      	   else 
      	   { 
      	       for(j=n-i-1;j>=i;j--) 
      	       if(s[i]==s[j]) 
      	           break; 
      	       change+=n-i-1-j; 
      	       for(k=j;k<n-i-1;k++) 
      	           s[k]=s[k+1]; 
      	       s[n-i-1]=s[i]; 
      	   }
      	}  
      	return change; 
      }

      posted on 2023-01-17 22:41  harumakigohan  閱讀(74)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲一区二区三区激情视频| 国内揄拍国内精品少妇| 国产情侣激情在线对白| 国产亚洲一区二区三区四区| 欧美成人h精品网站| 亚洲一区精品视频在线| 国产人妻精品午夜福利免费 | 成A人片亚洲日本久久| 国产仑乱无码内谢| av老司机亚洲精品天堂| 秋霞电影网| 国产亚洲一区二区三区成人| 亚洲av中文一区二区| 青柠影院免费观看高清电视剧丁香| 日韩精品一区二区三区激情视频| 亚洲男人综合久久综合天堂| 国产精品午夜无码AV天美传媒| 久久亚洲女同第一区综合| 人妻少妇偷人无码视频| 97人妻人人揉人人躁人人| 亚洲乱码中文字幕小综合| 中文字幕亚洲人妻系列| 97人妻天天爽夜夜爽二区| 国产亚洲综合一区二区三区| 不卡一区二区三区四区视频| 麻豆一区二区中文字幕| 丰满人妻无码∧v区视频| 亚洲成色精品一二三区| 真实国产乱子伦视频| 国内精品视频区在线2021| 亚洲国产一区二区av| 又大又紧又粉嫩18p少妇| 四虎影视www在线播放| 亚洲成在人线在线播放无码| 中文字幕精品亚洲无线码二区| 自慰无码一区二区三区| 亚洲日本韩国欧美云霸高清| 国产二区三区不卡免费| 日本a在线播放| 国产亚洲精品视频一二区| 天堂中文最新版在线官网在线|