鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 编程语言开发 > c语言 > >

T1题(关于数组的插入与删除的精炼算法的应用)

来源:互联网 作者:佚名 时间:2013-06-08 11:37
T1题(关于数组的插入与删除的精炼算法的应用) // T1 //关于T1的分析 //这道题用链表显得大材小用了,因为本身就是小数目操作 #include stdio.h #include string.h //char str[105], cmd[6], ch[6]; //之所以 cmd 用数组是因为 "END" 的接收需要,而且 %c

T1题(关于数组的插入与删除的精炼算法的应用)

// T1
//关于T1的分析
//这道题用链表显得大材小用了,服务器空间,因为本身就是小数目操作
#include <stdio.h>
#include <string.h>
//char str[105], cmd[6], ch[6];
//之所以 cmd 用数组是因为 "END" 的接收需要,而且 %c 的输入格式会接收 '\n'
//之所以 ch 用数组是因为 %c 的输入格式会接收 '\n'
//3或者6或者1都是可以的
char str[105], cmd[3], ch[1];


int main()

{
  int i, j, k, l;
  //考虑到题意是多组操作
  while(scanf("%s", str) == 1)
  {
    while(scanf("%s", cmd) == 1 && strcmp(cmd, "END") != 0)
    {
      scanf("%s", ch);
      l = strlen(str);
      if(cmd[0] == 'A') //A操作
      {
        scanf("%d", &k);
        --k;
        if(k > l) k = l;
//////////////////////////////////////////////////////////////////////////
      //这是一段不错的代码,香港服务器香港空间,有着不错的思想
      //很适合小数目操作,但对于大数目,就不好了
      //前面的后移, 腾出要插入元素的位置
      // i 是最后一个元素下标
        for(i = l - 1; i >= k; --i)
          str[i+1] = str[i];
//////////////////////////////////////////////////////////////////////////
        str[k] = ch[0];
        str[++l] = '\0';//结束标识需要加上

      }else

      { //B操作

//////////////////////////////////////////////////////////////////////////
       //这是以一段优秀的代码,有着优秀的思想
      //很适合小数目操作,但对于大数目,就不好了
      //很优秀的处理了元素的查找并删除并移位
        for(i = j = 0; i < l; ++i)
        {
          if(str[i] != ch[0])
          str[j++] = str[i];
        }
        str[j] = '\0';
//////////////////////////////////////////////////////////////////////////
      }
    }
    puts(str);
  }
  return 0;
}

posted on

Copyright ©2013 JokerSmithWang

网友评论
<