删除最少的字符个数,使其成为回文,问长度最大的是多少。 ...

打印 上一主题 下一主题

主题 715|帖子 715|积分 2145

删除最少的字符个数,使其成为回文,问长度最大的是多少。
  1. #include <stdio.h>
  2. #include <string.h>
  3. int isHuiWen(char* s) {
  4.     int left = 0;
  5.     int right = strlen(s) - 1;
  6.     while (left < right) {
  7.         if (s[left] != s[right])
  8.             return 0;
  9.         left++;
  10.         right--;
  11.     }
  12.     return 1;
  13. }
  14. int max = 0;
  15. int len(char* s, int n) {
  16.    
  17.     if (!isHuiWen(s)) {
  18.         int i, j;
  19.         for (i = 0; i < n; i++) {
  20.             char temp = s[i]; // 备份当前字符
  21.             for (j = i; j < n - 1; j++)
  22.                 s[j] = s[j + 1]; // 移除当前字符
  23.             s[n - 1] = '\0'; // 在字符串末尾添加空字符
  24.             
  25.                
  26.             int res = len(s, n - 1); // 递归调用
  27.             if (max < res)
  28.                 max = res;
  29.             s[n - 1] = temp; // 恢复当前字符
  30.             if (isHuiWen(s)) {               
  31.                 break;
  32.             }            
  33.         }
  34.         return max;
  35.     }
  36.     return n; // 如果是回文,返回字符串长度
  37. }
  38. int main() {
  39.     char s[] = "acbdcaa";
  40.     int n=strlen(s);
  41.     printf("%d\n", len(s,n));
  42.     return 0;
  43. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表