假定有一篇文章为A(1000字左右),另一篇文章为B,以A为参考,要求出B中有多少字符(假定都是汉字)与
A相符假定为C个(要考虑字符在文章中的顺序),又有多少个不相符,假定为D(如能精确多少个是多的、错的、漏的更好),请提供思路。

解决方案 »

  1.   

    建立字符数组,建立int数组,字符数组存储文档的字符,然后一个一个的比较,发现相同的增1。
      

  2.   

    是不是类似于vss中的版本比较功能?
      

  3.   

    先把A中B不存在的字符删除,并记下存在字符的索引,然用把A中存在字符的索引相连续的组成"所谓的词或句",不连续的扔掉(扔掉的最好也按索引连接起来扔到一个预定的集合中),并记下首位置.所有的A词放到一个有序集合中,然后按这个集合的顺序开始对B进行查找,如果找不到,把A词扔掉,如果找到,对B对应的区域标示(可以多重标示,按"词"的长度进行分级),最后对B所标示和未标示的区域进行分析就可以了.
    我的思路差不多是这种样,写起来估计就比较麻烦了.
    这样做法不一定行,而且肯定不能检测错漏
      

  4.   

    jointan() 的思路也许行,有谁搞个完整的算法,请继续加油!
      

  5.   

    ............
    如果就是你这么个需求的话,因该很容易,只要A有,B中不存在的字符,一律算错,用一个双头索引开始对AB进行查找,如果在对方中查找失败,认为是漏,如果查找成功,"相对索引"不一致,则拉伸对方数组的间距,最后形成的A和B的"稀松线表"长度理论上保持一致,然后按位重合两个线性表就完事了
      

  6.   

    网上提到了"LCS算法",指最大的公共串,在这里,我认为不要最大的串,我想找多个比较大的串(比如10个字符),让他们对文章进行分解,再递归
      

  7.   

    搜索下word比较代码,以前见过C#的其实用简单的正则也可以做。
      

  8.   

    我想借助LCS算法,先从A中每次取10个字符放在
      

  9.   

    A:我单位要搞个打字测试,我不想用现成的软件去测试.因为现成的软件你绝对不可能多打(多打算错),可实际工作中多打\漏打等并没有提示,所以我认为现成打字软件并不十分可靠(在这一点上)
    所以发了这个贴子,请继续讨论.
    B:软件你绝对我单位要搞个打字测试,因为现成的软件你绝对我不想用现成的软件去测试.不可能多打(多打算错),可实际工作中多打\漏打等并没有提示,因为现成的软件你绝对,十分可靠(在这一点上)
    所以发了这个贴子,请继续讨论.C:例如上面的A为标准,B是人工故意混淆,请找出B相对A有多少是多的,漏得.比如B的头几个字"软件你绝对"是多的,
      

  10.   

    我认为可行的思路是:
    一)借助LCS算法,找出最大的公共字符串假定为D,如果D在A的头,而不在B的头,则在B中D前面的都是多出的;如果D在A末位,D在B的中间,则B中D后的都是多出的;如果D在A中间,1)在B头,则A中D之前的是B中漏掉的;2)在B末位,则A中D之后的是B中漏掉的,3)在B中,则把A以D为界一分为二(不含D)假定为A1,A2,B中为B1,B2
    二)继续对A1_B1,A2_B2使用一),分为A11,A12,A21,A22,B11,B12,B21,B22,
    三)继续对A11_B11,A12_B12___使用一),
    四)继续对A111_B111,A112_B112,A121_B121,
    至到每个相比较的公共字符串长度为0,
      

  11.   

    呵呵,我想也是搞打字测试的问题
    你可以这样子来试做一下:正确文章为A,从A中取出字符,逐一比较,假如有不符的aa,那么和后一个字比较,假如连续指定个数不符则设这个字为错,执行相应的操作;若符合,再执行下一个字,和刚才发生错误的那个字开始比较,直到和刚才那个字相同的字为止.若没找到则设B中的那段字为错,然后继续往下执行.若找到了,再进行比较下一个字,若又找到,则设aa为错.这样子了,下面就顺这个思路我想是可以实现的.
      

  12.   

    超难算法问题:假定有一篇文章为A(1000字左右),另一篇文章为B,以A为参考,要求出B中有多少字符(假定都是汉字)与A相符假定为C个(要考虑字符在文章中的顺序),又有多少个不相符,假定为D(如能精确多少个是多的、错的、漏的更好),请提供思路 下面附测试题A,B
    A:我单位要搞个打字测试,我不想用现成的软件去测试.因为现成的软件你绝对不可能多打(多打算错),可实际工作中多打\漏打等并没有提示,所以我认为现成打字软件并不十分可靠(在这一点上)
    所以发了这个贴子,请继续讨论.
    B:软件你绝对我单位要搞个打字测试,因为现成的软件你绝对我不想用现成的软件去测试.不可能多打(多打算错),可实际工作中多打\漏打等并没有提示,因为现成的软件你绝对,十分可靠(在这一点上)
    所以发了这个贴子,请继续讨论.C:例如上面的A为标准,B是人工故意混淆,请找出B相对A有多少是多的,漏得.比如B的头几个字"软件你绝对"是多的,我认为可行的思路是:
    一)借助LCS算法,找出最大的公共字符串假定为D,如果D在A的头,而不在B的头,则在B中D前面的都是多出的;如果D在A末位,D在B的中间,则B中D后的都是多出的;如果D在A中间,1)在B头,则A中D之前的是B中漏掉的;2)在B末位,则A中D之后的是B中漏掉的,3)在B中,则把A以D为界一分为二(不含D)假定为A1,A2,B中为B1,B2
    二)继续对A1_B1,A2_B2使用一),分为A11,A12,A21,A22,B11,B12,B21,B22,
    三)继续对A11_B11,A12_B12___使用一),
    四)继续对A111_B111,A112_B112,A121_B121,
    至到每个相比较的公共字符串长度为0___
      

  13.   

    类似贴,请与我联系([email protected])