阿里-笔试-评测

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里-笔试-评测相关的知识,希望对你有一定的参考价值。

忘了具体是啥题目了。类似与求最小编辑距离。

第一行:输入的行数:

后面是输入的记录和关键字:

如:第一行:2

后面:search_dress_in_11:30_search_drese_in_11:31 dress

search_dress_in_11:30_search_drese_in_11:31 glass

输出:最小编辑距离为1的字符串的起始位置,没有返回-1

7 29

-1

 

反正我是不知道我怎么错的。即使是输出格式,也不可能一个负用例都没有把。很奇怪。

 1 //
 2 // Created by ProMoriarty on 2017/8/18.
 3 //
 4 
 5 #include <iostream>
 6 #include<cstdio>
 7 #include<math.h>
 8 #include <algorithm>
 9 #include <vector>
10 #include <string>
11 using namespace std;
12 int edit(string str1, string str2)
13 {
14     int max1 = str1.size();
15     int max2 = str2.size();
16 
17     int **ptr = new int*[max1 + 1];
18     for(int i = 0; i < max1 + 1 ;i++)
19     {
20         ptr[i] = new int[max2 + 1];
21     }
22 
23     for(int i = 0 ;i < max1 + 1 ;i++)
24     {
25         ptr[i][0] = i;
26     }
27 
28     for(int i = 0 ;i < max2 + 1;i++)
29     {
30         ptr[0][i] = i;
31     }
32 
33     for(int i = 1 ;i < max1 + 1 ;i++)
34     {
35         for(int j = 1 ;j< max2 + 1; j++)
36         {
37             int d;
38             int temp = min(ptr[i-1][j] + 1, ptr[i][j-1] + 1);
39             if(str1[i-1] == str2[j-1])
40             {
41                 d = 0 ;
42             }
43             else
44             {
45                 d = 1 ;
46             }
47             ptr[i][j] = min(temp, ptr[i-1][j-1] + d);
48         }
49     }
50 
51 //    for(int i = 0 ;i < max1 + 1 ;i++)
52 //    {
53 //        for(int j = 0; j< max2 + 1; j++)
54 //        {
55 //            cout << ptr[i][j] << " " ;
56 //        }
57 //        cout << endl;
58 //    }
59     int dis = ptr[max1][max2];
60 
61     for(int i = 0; i < max1 + 1; i++)
62     {
63         delete[] ptr[i];
64         ptr[i] = NULL;
65     }
66 
67     delete[] ptr;
68     ptr = NULL;
69 
70     return dis;
71 }
72 
73 int main()
74 {
75 
76     int count = 0;
77     int n;
78     scanf("%d",&n);
79     for(int i=0;i<n;i++){
80         string str1,str2;
81         cin>>str2;
82         cin>>str1;
83         int flag = 1;
84         for(unsigned int j=0;j<str2.size()-str1.size();j++){
85             string temp(str2,j,str1.size());
86             int r = edit(str1,temp);
87             if(r<=1){
88                 flag = 0;
89                 cout<<j<<" ";
90             }
91 
92         }
93         if(flag==0)
94             cout<<endl;
95         if(flag==1)
96             cout<<-1<<endl;
97     }
98     return 0;
99 }

 

以上是关于阿里-笔试-评测的主要内容,如果未能解决你的问题,请参考以下文章

阿里巴巴3.25C++研发笔试编程题解

阿里巴巴3.25C++研发笔试编程题解

阿里VS华为-开源镜像站体验及评测

阿里笔试——重庆阿里笔试题总结

阿里笔试——北京阿里笔试题总结

阿里前端笔试总结