0
我正在尝试编码c中的蛋白质折叠项目。 在哪里我会给一个长度为3-4的字符串让我们说BWB或BBWW ... 我必须将此字符串存储在二维数组中,并使用此字符串打印所有可能的组合。在二维阵列中打印字符串的各种构象
如果字符串的长度是n,矩阵的长度是2n。我将第一个元素存储在数组的中心。
我到目前为止所尝试的内容如下 - 我可以打印特定输入的构造数量 - 比方说3字母字符串,它将生成12个组合。对于4它将生成36个组合。 。像这样..
所以我的第一个字母ll在矩阵的中心,然后第二个单词可以在任何位置 - 这一个的顶部,左侧,右侧,...取决于这第二个第三个可以在上,右,左或任何3个组合...
总我还得12个组合..
我已经TR灭蝇灯很多事情到现在......和任何我想是
#include<string.h>
#include<math.h>
#include<stdio.h>
main()
{
int n=3;
//printf("enter the number of inputs:\t");
//scanf("%d",&n);
int i=4;
int temp=pow((i-1),(n-2));
int comb=i*temp;
//printf("total number of combination is : %d",comb);
char str[3]="ABC";
int size=2*n;
int p;
char mat[size][size];
int j,k;
int a=size/2;
int b=size/2;
for(j=0;j<size;j++)
{
for(k=0;k<size;k++)
{
mat[j][k]='*';
}
}
mat[a][b]=str[0];
int q;
int r;
for(r=1;r<3;r++)
{
for(q=1;q<=4;q++)
{
switch(q)
{
case 1:a=a+1;
break;
case 2:a=a-1;
break;
case 3:b=b+1;
break;
case 4:b=b-1;
break;
}
mat[a][b]=str[r];
}
}
for(p=0;p<comb;p++)
{
for(j=0;j<size;j++)
{
for(k=0;k<size;k++)
{
printf("%c",mat[j][k]);
}
printf("\n");
}
printf("\n");
}
printf("total number of combination is : %d",comb);
}
输出我得到的是
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
******
******
******
***CC*
***C**
******
total number of combination is : 12
任何帮助将不胜感激!
你能解释一下“组合”吗?你是否试图创建输入字符串的*排列? –