一个算法的实现

简介:

某同学帮国外某MM做的题。

算法描述:

首先将两个字符串和一个临界值作为参数传入函数,比如"aaaaaaaaaa","bbaaababaa",2,然后在函数中依次比较两个字符串的每个字符,当不同的字符数超过指定的临界值后,继续比较,并将大于等于临界值且最大数目的第一个字符串中的相同字符转换为大写,比如,根据以上输入,那么输出为:aaAAAaaaAA。要求:只能用if,else,递归及字符串处理的相关函数。

欢迎各种拍砖。

 
  1. //Code By Pnig0s1992  
  2. //Date:2012,3,13  
  3. #include <stdio.h>  
  4. #include <Windows.h>  
  5. #include <string.h>  
  6. #include <stdlib.h>  
  7.  
  8. #define MAXSIZE 20  
  9.  
  10. int SuperStr(CHAR lpFirst[],CHAR lpLast[],int iCheck);  
  11.  
  12. int main(int argc,char * argv[])  
  13. {  
  14.     CHAR lpFirst[] = "aaaaaaaaaa";  
  15.     CHAR lpSecond[] = "bbaaababaa";  
  16.     int iCheck = 2;  
  17.     SuperStr(lpFirst,lpSecond,iCheck);  
  18.     printf("\n修改后的第一条字符串:%s",lpFirst);  
  19.     system("pause");  
  20.     return 0;  
  21. }  
  22.  
  23. int SuperStr(CHAR lpFirst[],CHAR lpLast[],int iCheck)  
  24. {  
  25.     CHAR cTempF = *lpFirst;  
  26.     CHAR cTempL = *lpLast;  
  27.     int iTempMark;  
  28.     static CHAR cSave;  
  29.     static LPSTR lpTempStr = (LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,20);  
  30.     static int iCount = 0;  
  31.     int iReturn = 0;  
  32.     if(cTempF == '\0' || cTempL == '\0')  
  33.     {  
  34.         return 0;  
  35.     }  
  36.     int iSame = SuperStr(++lpFirst,++lpLast,iCheck);  
  37.       
  38.     if(cTempF == cTempL)  
  39.     {  
  40.         cTempF-=32;  
  41.         cSave = cTempF;  
  42.         iCount++;  
  43.         iReturn =  1;  
  44.     }else 
  45.     {  
  46.         if(iCount<iCheck)  
  47.             iCount =0;  
  48.     }  
  49.  
  50.     if(iCount >=iCheck)  
  51.     {  
  52.         if(iCount == 1)  
  53.         {  
  54.             strnset(lpFirst-1,cTempF,iCount);  
  55.             iCount = 0;  
  56.             return 0;  
  57.         }else 
  58.         {  
  59.             if(iSame == 0)  
  60.             {  
  61.                 strnset(lpFirst+1,cSave,iCount);  
  62.                 iCount = 0;  
  63.             }  
  64.         }  
  65.     }  
  66.     return iReturn;  

 
















本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/805284,如需转载请自行联系原作者

相关文章
|
JavaScript 算法 前端开发
【前端算法】JS实现数字千分位格式化
JS实现数字千分位格式化的几种思路,以及它们之间的性能比较
343 1
|
存储 前端开发 算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
163 0
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
一则有趣的算法题:两个栈实现一个队列
一则有趣的算法题:两个栈实现一个队列
|
算法 计算机视觉 Python
Python实现KNN算法和交叉验证
Python实现KNN算法和交叉验证
344 0
Python实现KNN算法和交叉验证
|
算法 数据挖掘 Python
利用python实现Apriori关联规则算法
利用python实现Apriori关联规则算法
666 0
利用python实现Apriori关联规则算法
|
算法 Java Go
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解(下)
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解(下)
|
算法 Java 决策智能
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解(中)
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解(中)
|
算法 Java Go
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解(上)
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解(上)
|
算法 决策智能 C++
运筹优化学习10:分支定界算法求解整数规划问题及其Matlab实现(下)
运筹优化学习10:分支定界算法求解整数规划问题及其Matlab实现
运筹优化学习10:分支定界算法求解整数规划问题及其Matlab实现(下)
|
算法 决策智能
运筹优化学习10:分支定界算法求解整数规划问题及其Matlab实现(上)
运筹优化学习10:分支定界算法求解整数规划问题及其Matlab实现
运筹优化学习10:分支定界算法求解整数规划问题及其Matlab实现(上)