zoukankan      html  css  js  c++  java
  • 剪花布条 HDU

    今天做到了相关的题,感觉知识欠缺就想着写个总结加深一下记忆。

    首先是今天看到的题:

    一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。
    对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 

    Input:

    输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,
    布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。

    Output:

    输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。

    Sample Input:

    abcde a3
    aaaaaa  aa
    #

    Sample Output:

    0
    3


    这个题数据卡的不严,暴力可以很轻松地跑过去。
    以下是暴力的写法:

    #include<cstdio>
    #include<iostream> 
    #include<cmath> 
    #include<cstring> 
    using namespace std; 
    
    char a[1005]; 
    char b[1005];
     
    int main() 
    { 
    	while(scanf("%s",a+1))
    	{ 
    		if(a[1]=='#')break; 
    		int result=0; 
    		scanf("%s",b+1); 
    		int len1=strlen(a+1); 
    		int len2=strlen(b+1); 
    		for(int i=1 ; i<=(len1-len2+1) ; i++) 
    		{ 
    			int t=i; 
    			for(int j=1 ; j<=len2 ;) 
    			{ 
    				if(a[t]==b[j])  
    				{ 
    					t++; j++; 
    					if(j == len2+1) 
    					{ 
    						j=1; 
    						i=i+len2-1; 
    						result++; 
    						break; 
    					} 
    				} 
    				else 
    				{ 
    					j=1; 
    					break; 
    				}  
    			} 
    		} 
    		printf("%d
    ",result); 
    	} 
    	return 0; 
    } 
    

    不过正所谓暴力肯定不是我们的最终目标,所以我上网查了查发现还有很多方法

    一 :C语言库里有strstr()可以用。 需要头文件#include<cstring> || #include<string.h> 例如:strstr(s1,s2); 返回s2在s1中的第一个位置(有多个没法),返回类型是char *

    二:C++中的string类的find函数 例如: string str1 = "asdasd"; int a = str1.find("asd",0); 最终a = 0   这里返回类型为int,即下标。 find里的第二个参数是代表从第几(下标)开始找。

    三:Kmp算法,BM算法。

    这个比较麻烦,直接上大神传送门  点击打开链接

  • 相关阅读:
    linux 校时命令
    vba_按钮
    ASP.NET MVC3快速入门——第一节、概述
    ASP.NET MVC3快速入门——第二节、添加一个控制器
    ASP.NET MVC3快速入门——第三节、添加一个视图
    ASP.NET程序中常用的三十三种代码
    LINQ定义的标准查询操作符
    ADO.NET
    java编程 反射类的使用
    Struts2 源代码学习 (一)
  • 原文地址:https://www.cnblogs.com/vocaloid01/p/9514281.html
Copyright © 2011-2022 走看看