C 全局变量的行为不符合预期
这就是我试图解决的问题。(给定一个长度为2n的不同字符字符串,我必须以所有可能的方式将其分成两部分,而不重复分组) 我使用的方法是:C 全局变量的行为不符合预期,c,C,这就是我试图解决的问题。(给定一个长度为2n的不同字符字符串,我必须以所有可能的方式将其分成两部分,而不重复分组) 我使用的方法是: 生成字符串的所有排列 存储可接受的置换(我生成“hauy”和“hayu”,但只存储其中一个) 检查新生成的排列与存储的排列,以过滤出重复的排列 印刷品 (我意识到可能有更好的方法) #包括 #包括 #包括 字符*b[100000000]; int-bSize=0; 作废打印(字符*a) { int k=strlen(a); printf(“M:”); for
#包括
#包括
#包括
字符*b[100000000];
int-bSize=0;
作废打印(字符*a)
{
int k=strlen(a);
printf(“M:”);
for(int i=0;ib[bSize]=a;
在b[bSize]
中存储a
的值a
是指向main
中定义的数组a
的第一个元素的指针。因此,您不存储单个字符串,只存储指向a
的指针,并且该指针永远不会更改
若要使用此算法,必须复制每个字符串。这需要更改b
的定义方式以及字符串的比较方式。(不能将字符串与=
进行比较)
(但是,对于此任务,有一种更好的算法,它不需要生成所有排列。)b[bSize]=a;
将a
的值存储在b[bSize]
a
是指向main
中定义的数组a
的第一个元素的指针。因此,您不存储单个字符串,只存储指向a
的指针,并且该指针永远不会更改
若要使用此算法,必须复制每个字符串。这需要更改b
的定义方式以及字符串的比较方式。(不能将字符串与=
进行比较)
(不过,对于这项任务,有一种更好的算法,它不需要生成所有排列。)你不需要排列。当你说b[bSize]=a
,您将指向main
中a
的第一个元素的指针存储在main
中,并且始终是相同的数组--只有在您排列时其内容才会更改。您可以通过打印所有b[i]来验证这一点
--始终是当前排列。如果要存储当前排列,必须制作一份副本。您不需要排列。当您说b[bSize]=a
,您将指向main
中a
的第一个元素的指针存储在main
中,并且始终是同一个数组--只有它的内容在您排列时会更改。您可以通过打印所有b[i]
来验证这一点--它始终是当前排列。如果要存储当前排列,必须制作一份副本。