From e5f63bc0af4ad07c07ae6cf80c8ee9dfedba1c8e Mon Sep 17 00:00:00 2001 From: linyongji Date: Wed, 3 Feb 2021 13:35:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E6=94=AF1=E6=95=B4=E7=90=86=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=8C=E6=8F=90=E4=BA=A4=E5=AE=8C=E6=88=90=E7=9A=84?= =?UTF-8?q?=E9=A2=98=E7=9B=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 14 +++++ .vs/Algorithm/v16/.suo | Bin 23040 -> 46080 bytes code/code.vcxproj | 44 +++++++------- code/code.vcxproj.filters | 18 ++++++ code/config/1_ContainsNearbyDuplicate.ini | 44 ++++++++++++++ code/include/1_ContainsNearbyDuplicate.h | 11 ++++ code/src/1_ContainsNearbyDuplicate.cpp | 57 ++++++++++++++++++ code/src/main.cpp | 8 +++ test/pch.cpp | 69 +++++++++++++++++++++- test/pch.h | 15 ++++- test/test.cpp | 29 ++++++++- test/test.vcxproj | 6 +- 12 files changed, 288 insertions(+), 27 deletions(-) create mode 100644 code/config/1_ContainsNearbyDuplicate.ini create mode 100644 code/include/1_ContainsNearbyDuplicate.h create mode 100644 code/src/1_ContainsNearbyDuplicate.cpp create mode 100644 code/src/main.cpp diff --git a/.gitignore b/.gitignore index 20d6ac6..c4154dd 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,17 @@ *.testlog *.manifest *.user +*.obj +*.tlog +*.coverage +*.pdb +*.log +*.exe +*.lib +*.recipe +*.dll +*.idb +*.pch +*.txt +*.ilk +*.exp diff --git a/.vs/Algorithm/v16/.suo b/.vs/Algorithm/v16/.suo index 0c85e503d3050fc199360931e13abea004fa8ab2..00d4a184e14981837d189d8e4549c46ad1f9573b 100644 GIT binary patch literal 46080 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 Mx5d9JuZ%|i30c`FwEzGB delta 2567 zcmdT`UrbwN6u;l?y>Kt1PzIDT7_?9vbC4AUW{|S$TA3@XWy*|3-CCtV9L!C6fdN@> z*#dJzQ+lE=#>@ntj4w;4&qZR4$&#sCOqTet?7{f7Cu@QU;yKrT*eQwG!izWg^?c`i z=YHS$e{1|A8rNB}o0VPjmWoUQmsnqN_tUG1AJ%?kHG&{$E|?al*+s~T@q!~L@H3dU z1e9W2$_O}7Z-=|$PU{RZa|n7AU{d)~Sc;R@9~&DRB}jMX*2r$ya7|Rr(F&x6h;oD- zQG}rV0;I0odKXeUs}|{QM14+Pm7@(v8xd|q6Jie?MTayavlsC=VjrR!BJ$Ox@b#3~ zj}Ct?I<0dbKj`lf@LAga+vj+`&vX+#6qI$O-0dC6n;ZDUL%`jaaF0Sj?w02CcnIhn z2g)b}w5Id;lM6xDW(=IDL~+_823v-pl82y30Y`Q5wZYHXQdmoM`BcX67%PG&mQ91+ z6=&xl+ZBY>4lfu_`;{_Opipw9f)Qk*7Wln9ppcPud3#`-l+sfbeN1KK52csCX1#z6 zIY>_e%Bst^&ys^di9*k>f>`%}LUE=l*cATSJs?pnL8P-B#_9{Hk|E|@Otsp;W*=g; zpxfiD2D0`Ixf1mpuvQZn7X_HE4JfTBpyK=cwAulMw5s!jYzp+i!N= zcng_Rh*88C;xyuI#2Lg{#5;&_L=2%LCg@rSJEV$P>DJ!8q+Vj<8wg5c}%nh9(fVouOoZYnemXngR4Ssm!DA&FWo zKl8;@3Un1cDQArNL3hU4A;>y|sz6OkV`TG?XFzv_6zX4UJ1&+rWYE0-Lng}pl?hni zGbtZN501jQ<{8!t+2)Yaf;@c-xQpyr(D#PSMyDd?T|@mDYp++-Dtntuh48F12^rrL)INq z@Y7;`YPcATHzk;Ay0mN@Vqkk!18r0T#HavogOv@E1d^zcUJ$gWph0Vt703|u*9(RXw*_D`F)iKk>Q2Dr7Q){*YPlKTiXFm1UBcJ@Y5DN8>O6 diff --git a/code/code.vcxproj b/code/code.vcxproj index 01d1d03..0f332f7 100644 --- a/code/code.vcxproj +++ b/code/code.vcxproj @@ -17,7 +17,6 @@ Release x64 - 16.0 @@ -53,25 +52,23 @@ true Unicode - - + + + + + + + + + + + + + - - - - - - - - - - - - - true @@ -85,7 +82,6 @@ false - Level3 @@ -142,9 +138,17 @@ true - - + + + + + + + + + + - + \ No newline at end of file diff --git a/code/code.vcxproj.filters b/code/code.vcxproj.filters index afef69e..619842e 100644 --- a/code/code.vcxproj.filters +++ b/code/code.vcxproj.filters @@ -14,4 +14,22 @@ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + 头文件 + + + + + 源文件 + + + 源文件 + + + + + 资源文件 + + \ No newline at end of file diff --git a/code/config/1_ContainsNearbyDuplicate.ini b/code/config/1_ContainsNearbyDuplicate.ini new file mode 100644 index 0000000..c1961d1 --- /dev/null +++ b/code/config/1_ContainsNearbyDuplicate.ini @@ -0,0 +1,44 @@ +[Test1] +array=1,2,3,1 +key=3 +output=1 +[Test2] +array=1,0,1,1 +key=1 +output=1 +[Test3] +array=1,2,3,1,2,3 +key=2 +output=0 +[Test4] +array=1,2,3,1,2,3 +key=3 +output=1 +[Test5] +array=1,0,3,4,2,1,0,3,4 +key=3 +output=0 +[Test6] +array=8,7,15,1,6,1,9,15 +key=1 +output=0 +[Test7] +array=8,7,15,1,6,1,9,15 +key=3 +output=1 +[Test8] +array=1,4,3,3,2,2,3 +key=1 +output=1 +[Test9] +array=1,8,3,9,1,5,6,9,5,2,7 +key=1 +output=0 +[Test10] +array=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 +key=20 +output=0 +[Test11] +array=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,1 +key=25 +output=1 \ No newline at end of file diff --git a/code/include/1_ContainsNearbyDuplicate.h b/code/include/1_ContainsNearbyDuplicate.h new file mode 100644 index 0000000..6097595 --- /dev/null +++ b/code/include/1_ContainsNearbyDuplicate.h @@ -0,0 +1,11 @@ +#pragma once +#include +#include + +typedef struct node_t { //ṹ + int value; // ֵ + int index; // ± +}node; +int Comper_1(const void* a, const void* b); +int GetAbsolute(int a, int b); +bool ContainsNearbyDuplicate(int* nums, int numsSize, int k); diff --git a/code/src/1_ContainsNearbyDuplicate.cpp b/code/src/1_ContainsNearbyDuplicate.cpp new file mode 100644 index 0000000..71ac474 --- /dev/null +++ b/code/src/1_ContainsNearbyDuplicate.cpp @@ -0,0 +1,57 @@ +#include "../include/1_ContainsNearbyDuplicate.h" +//Ŀһһ kжǷͬ i j +// ʹ nums [i] = nums [j]i jIJľֵΪk +//˼·1.ṹ飬ÿԪصֵӦ±ڽṹ +// 2.ԪصֵԽṹ +// 3.ṹ飬ȽṹԪؼӦ±꣬ҵtrue򷵻false + + +bool ContainsNearbyDuplicate(int* nums, int numsSize, int k) +{ + int i = 0; + int j = 0; + node* arr = NULL; + arr = (node*)malloc(sizeof(node) * numsSize); //Ϊarrָ㹻ռ䣬 + if (NULL == arr){ + printf("ڴʧ\n"); + } + else{ + for (i = 0; i < numsSize; i++){ //numsnumsֵӦ±걣ڽṹarr + arr[i].value = nums[i]; + arr[i].index = i; + } + qsort(arr, numsSize, sizeof(node), Comper_1); //c⺯qsortԵõarr + for (i = 0; i < numsSize; i++){ //źarrѰҷtrue + for (j = i + 1; j < numsSize; j++){ + if (arr[i].value == arr[j].value){ //iԪغiԪȽϣжֵǷ + if (GetAbsolute(arr[j].index, arr[i].index) <= k){ //±ľֵkȽ + return true; + } + } + else { //ѭ + break; + } + } + } + } + free(arr); + return false; //ѭִԺ˵ûзϵĽ򷵻false +} + +int Comper_1(const void* a, const void* b) //qsortеıȽϺ +{ //ֵ<0,򣻷ֵ>0, + if (((node*)a)->value < ((node*)b)->value) + return -1; + else if (((node*)a)->value == ((node*)b)->value) + return 0; + else + return 1; +} +int GetAbsolute(int a, int b) //ֵ +{ + int t; + t = a - b; + if (t < 0) + t = t - 2 * t; + return t; +} diff --git a/code/src/main.cpp b/code/src/main.cpp new file mode 100644 index 0000000..6b7352f --- /dev/null +++ b/code/src/main.cpp @@ -0,0 +1,8 @@ +#include + +int main() { + + + + return 0; +} \ No newline at end of file diff --git a/test/pch.cpp b/test/pch.cpp index b6fb8f4..5417649 100644 --- a/test/pch.cpp +++ b/test/pch.cpp @@ -2,4 +2,71 @@ #include "pch.h" -// 当使用预编译的头时,需要使用此源文件,编译才能成功。 +int CalcCount(int n, char(*str)[10], const char* FileName) +{ + TCHAR chSectionNames[2048] = { 0 };//定义一个数组,保存读取节的名字 + char* pSectionName; //保存找到的某个节名字符串的首地址 + int i = 0; //i指向数组chSectionNames的某个位置,从0开始,顺序后移 + int j = 0; //j用来保存下一个节名字符串的首地址相对于当前i的位置偏移量 + int k = 0; //临时变量,用于给str数组赋值 + int m = 0; //临时变量,用于给str数组赋值 + int count = 0; //统计节的个数 + GetPrivateProfileSectionNames(chSectionNames, 2048, FileName);//获取文件中的节名,每个节名以"\0"分割,保存在chSectionNames中 + //要加头文件 + for (i = 0; i < 2048; i++, j++)//对chSectionName中保存的内容进行拆分 + { + if (chSectionNames[0] == '\0')//如果第一个字符就是0,则说明ini中一个节也没有, + { + break; + } + if (chSectionNames[i] == '\0') + { + count++; + pSectionName = &chSectionNames[i - j]; //找到一个0,则说明从这个字符往前,减掉j个偏移量, + //就是一个节名的首地址 + j = -1; //找到一个节名后,j的值要还原,以统计下一个节名地址的偏移量 + //赋成-1是因为节名字符串的最后一个字符0是终止符,不能作为节名 + for (m = 0; m <= strlen(pSectionName); m++)//把找到的节名保存到str中 + { + str[k][m] = *(pSectionName + m); + } + k++;//变量自加,用来保存下一个节名 + //在获取节名的时候可以获取该节中键的值,前提是我们知道该节中有哪些键。 + if (chSectionNames[i + 1] == 0) + { + break; //当两个相邻的字符都是0时,则所有的节名都已找到,循环终止 + } + } + } + return count;//返回节名的个数 +} + +//***************************************************************************************************// +//************切割字符串函数,返回值为int数组的首地址,通过传入int指针带回数组元素个数***************// +//***************************************************************************************************// +int* str_device(CString str, int* value_count) +{ + char* token; //存放被切割后的第一个子串 + int* Section_devide = (int*)malloc(sizeof(int) * 200);//存放字符切割完成以后的数组元素值 + char Section_value[500] = { 0 };//存放nums转换成string类型的结果 + memset(Section_value, 0, sizeof(char) * 500); + *value_count = 0; + strcpy(Section_value, str);//将CString类型的字符串转换成char类型,方便后面切割字符串 + //获得切割到的第一个字符串 + token = strtok(Section_value, ","); + /* 继续获取其他的子字符串 */ + while (token != NULL) { + Section_devide[*value_count] = (_ttoi)(token);//把切割得到的子串转为int,存到数组中去。 + token = strtok(NULL, ","); + (*value_count)++; //记录存了多少个元素 + } + return Section_devide; //返回数组首地址 +} +//字符串转bool +bool CstrToBool(CString str) +{ + if (str == "1") { + return 1; + } + return 0; +} diff --git a/test/pch.h b/test/pch.h index 69fcd40..d0edafb 100644 --- a/test/pch.h +++ b/test/pch.h @@ -7,6 +7,19 @@ #ifndef PCH_H #define PCH_H -// 添加要在此处预编译的标头 +#include +#include +#include +#include +#include + + +#include"../code/include/1_ContainsNearbyDuplicate.h" + + +int CalcCount(int n, char(*str)[10], const char* FileName); +int* str_device(CString str, int* value_count); +bool CstrToBool(CString str); + #endif //PCH_H diff --git a/test/test.cpp b/test/test.cpp index 96f9552..a5c62e4 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -2,15 +2,38 @@ #include "CppUnitTest.h" using namespace Microsoft::VisualStudio::CppUnitTestFramework; - -namespace test +#define FileName_1 "../code/config/1_ContainsNearbyDuplicate.ini" +namespace test1 +{ + TEST_CLASS(UnitTest_1) + { + TEST_METHOD(TestMethode1) + { + char Section_Name[100][10] = { 0 }; + int Section_Count = CalcCount(100, Section_Name, FileName_1); + int array_count = 0; + int* Section_Value; + CString Na, Nb, nExpect; + for (int i = 0; i < Section_Count; i++) { + GetPrivateProfileString(Section_Name[i], "array", " ", Na.GetBuffer(200), 200, FileName_1); + GetPrivateProfileString(Section_Name[i], "key", " ", Nb.GetBuffer(20), 20, FileName_1); + GetPrivateProfileString(Section_Name[i], "output", " ", nExpect.GetBuffer(20), 20, FileName_1); + Section_Value = str_device(Na, &array_count); + bool nReal = ContainsNearbyDuplicate(Section_Value, array_count, _ttoi(Nb)); + Assert::AreEqual(nReal, CstrToBool(nExpect)); + } + } + }; +} +namespace test2 { TEST_CLASS(test) { public: - + TEST_METHOD(TestMethod1) { } }; } + diff --git a/test/test.vcxproj b/test/test.vcxproj index c2403be..5fb2999 100644 --- a/test/test.vcxproj +++ b/test/test.vcxproj @@ -31,7 +31,7 @@ DynamicLibrary true v142 - Unicode + MultiByte false @@ -93,13 +93,15 @@ Level3 true $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true pch.h Windows $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + DebugFull + ../code/Debug/*.obj;%(AdditionalDependencies)