| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 596 人关注过本帖
标题:一个小程序,帮忙简化,谢谢
只看楼主 加入收藏
athenaliu
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-3-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
一个小程序,帮忙简化,谢谢
#include<stdio.h>

main()
{
    int t[28]={'a','b','a','b','c','a','b','c','a','c','b','a','b','c','a','c','b','b','a','a','c','c','a','b','c','c','a','a'};
    int p[5]={'a','b','c','a','c'};
    int i,j=0;
    for(i=0;i<=23;i++)
    {
        if(t[i]=p[j])
        {
            if(j<=4)
                j++;
            else
            {
                printf("t include p\n");
                printf("i=%d\n",i);
                break;
            }
        }
        else
            printf("t do not include p/n");
    }

}            
2010-04-15 13:37
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:4 
没看懂程序要表达什么

 for(i=0;i<=23;i++)这个是不是i<=28呢

反正按照你的思路,可以这么优化下
#include<stdio.h>

main()
{
    int t[28]={'a','b','a','b','c','a','b','c','a','c','b','a','b','c','a','c','b','b','a','a','c','c','a','b','c','c','a','a'};
    int p[5]={'a','b','c','a','c'};
    int i,j=0,k=4;
    int flag=0;
    for(i=0;i<=23/2;i++)
    {
        if(j>k){
                printf("t include p\n");
                printf("i=%d\n",i);
                flag=1;
                break;
            }
        if(t[i]==p[j])
        {         
            j++;
        }
        if(t[23-i]==p[k]){
            k--;
        }
    }
    if(flag==0)
        printf("t do not include p/n");
}            
2010-04-15 22:39
athenaliu
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-3-15
收藏
得分:0 
是看两个数组是否能匹配的
2010-04-16 16:04
lovebeba
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2010-4-16
收藏
得分:4 
- - 看不懂
2010-04-16 16:49
AI恒子
Rank: 2
等 级:论坛游民
帖 子:8
专家分:12
注 册:2010-4-8
收藏
得分:4 
你要干嘛·  
2010-04-16 22:00
bloodthirsty
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2010-4-17
收藏
得分:4 
不知道,这样是你想要的么,,不过我是用.net写的.
       private static int START_INDEX = 0;

        private void button1_Click(object sender, EventArgs e)
        {
            char[] t={'a','b','a','b','c','a','b','c','a','c','b','a','b','c','a','c','b','b','a','a','c','c','a','b','c','c','a','a'};
            char[] p = { 'a', 'b', 'c', 'a', 'c' };

            int result = 0;
            int total = t.Length -1;
            bool val = false;
            
            Compare(t, p, 0, 0, ref result, ref total);

            if (result == 5)
            {
                val = true;
            }

            MessageBox.Show(val.ToString() + " StartIndex: " + START_INDEX.ToString());
        }

        private void Compare(char[] t, char[] p, int index, int target, ref int result, ref int total)
        {
            if (index == total) return;
            if (result == 5) return;
            

            if (t[index] == p[target])
            {
                if (START_INDEX == 0)
                    START_INDEX = index;
               
                result = result + 1;
                Compare(t, p, index + 1, target + 1, ref result , ref total);
            }
            else
            {
                START_INDEX = 0;
                result = 0;
                Compare(t, p, index + 1, 0, ref result, ref total);
            }
        }
2010-04-17 03:01
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:4 
#include<stdio.h>

int main()
{
    char t[23]={'a','b','a','b','c','a','b','c','a','c','b','a','b','c','a','c','b','b','a','a','c','c'};
    char p[5]={'a','b','c','a','c'};
    int i=0, j=0, k;
    for(i=0; i<23; i++)
    {
        k = i;
        while( i<23 && j<5 && t[i]==p[j] )
        {
            i++;
            j++;
        }
        if( j==5 )
        {
            printf("t include p\n");
            printf("%d\n", k+1);
            return 0;
        }
        if( i==23 )
            printf("t do not include p/n");
        else
        {
            i = k++;
            j = 0;
        }
    }
    return 0;
}
2010-04-17 03:59
athenaliu
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-3-15
收藏
得分:0 
谢谢
2010-04-17 10:43
快速回复:一个小程序,帮忙简化,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027040 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved