如何找到49个组合为2个数组每个数组大小3 ...? [英] how to find 49 combination for 2 array each array size 3...?

查看:72
本文介绍了如何找到49个组合为2个数组每个数组大小3 ...?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问:数组1 = {1,2,3}数组2 = {4,5,6}

2n-1 = 2(pow 3)-1 = 7

2n-1 = 2(pow 3)-1 = 7

7 * 7 = 49



输出需要像那样.........任何人都可以帮助我谢谢

--------------------------- -------------------------------------------------- ----

C1 =(1,4)C2 =(1,5)C3 =(1,6)C4 =(1,4,5)C5 =(1,4,6) )C6 =(1,5,6)C7 =(1,4,5,6)



C8 =(2,4)C9 =(2,5 )C10 =(2,6)C11 =(2,4,5)C12 =(2,4,6)C13 =(2,5,6)C14 =(2,4,5,6)



C15 =(3,4)C16 =(3,5)C17 =(3,6)C18 =(3,4,5)C19 =(3,4,6) )C20 =(3,5,6)C21 =(3,4,5,6)



C22 =(1,2,4)C23 =(1 ,2,5)C24 =(1,2,6)C25 =(1,2,4,5)= C26(1,2,4,6)C27 =(1,2,5,6)= C28( 1,3,4)

C29 =(1,3,5)C30 =(1,3,6)C31 =(1,3,4,5)C32 =(1,3, 4,6)C33 =(1,3,5,6)



C34 =(2,3,4)C35 =(2,3,5)C36 =(2,3,6)C37 =(2,3,4,5)= C38(2,3,4,6-)C39 =(2,3,5,6)= C40(1,2,4, 5,6)C41 =(1,3,4,5,6)C42 =(2,3,4,5,6)



C43 =(1,2,3,4)C44 =(1,2,3,5)C45 =(1,2,3,6)C46 =(1,2,3, 4,5)C47 =(1,2,3,4,6)C48 =(1,2,3,5,6)C49 =(1,2,3,4,5,6)



i试试这段代码但错了....





  #include   <   iostream  >  
使用 < span class =code-keyword> namespace std;


int main(){
int I,J;
int arr1 [] = { 1 2 3 };
int arr2 [] = { 4 5 6 };
for (i = 0 ; i< 3; i ++){
< span class =code-keyword> for (j = 0 ; j< 3; j ++)
cout<<< arr1 [i ]<< << arr2 [j]<< endl;
cout<<< arr1 [i]<< << ; arr2 [i]<< << arr2 [i + 1] << \ n;
cout<<< arr1 [i]<< << ; arr2 [i]<< << arr2 [i + 2] << \ n;
cout<<< arr1 [i]<< << ; arr2 [i + 1]<< << arr2 [i + 2]<< \ n;
cout<<< arr1 [i]<< << ; arr2 [i]<< << arr2 [i + 1] << << arr2 [i + 2]<< < span class =code-string> \ n;

}
return 0 ;
}

解决方案

这是一个有趣的问题。这个问题的解决方案比听起来要复杂得多。我花了一个多小时来计算算法。



这是代码:



< pre lang =c ++> #include < < span class =code-leadattribute> iostream >
使用 namespace std;

// comb()使用的辅助函数。
void print_arr( int * arr, size_t beg, size_t size)
{
if (size< 1 return ;

for int i = beg; i< size; i ++)
{
cout<< ARR [I];
cout<< ;
}

}


void comb( int * a, int * b)
{
int j = 1 ;

int al_pos = 0 ;
int al_start = 1 ;

int k = 1 ;
int bl_pos = 0 ;
int bl_start = 1 ;

while true
{

如果(j> 3 // j == 4
{

al_pos ++;
j = al_pos + 1 ;

if (al_pos> 1 // l_pos == 2
{
al_start ++;
}

}


k = 1 ;
bl_pos = 0 ;
bl_start = 1 ;

while true
{
< span class =code-keyword> if (k> 3 // k == 4
{

bl_pos ++;
k = bl_pos + 1 ;

如果(bl_pos> 1 // bl_pos == 2
{
bl_start ++;
}

}

if (al_start> 2 // l_start == 3
{
print_arr(a, 0 2 );
cout<< a [ 2 ]<< ;

}
else
{
print_arr(a,al_start- 1 ,al_pos);
cout<< a [j- 1 ]<< ;

}

如果(bl_start> 2
{
print_arr(b, 0 2 );
cout<< b [ 2 ]<< ENDL;
break ;
}

print_arr(b,bl_start- 1 ,bl_pos);
cout<< b [k- 1 ]<< ENDL;

k ++;
}

如果(al_start> 2
break ;

j ++;

}
}


int main()
{
int a [ 3 ] = { 1 2 3 };
int b [ 3 ] = { 4 5 6 };


comb(a,b);

return 0 ;
}


  int  main()
{
int i,j,k = 0 ;
int arr1 [] = { 1 2 3 };
int arr2 [] = { 4 5 6 };
for (i = 0 ; i< 3; i ++)
{
for (j = 0 ; j< 3; j ++)
{
cout C<< k<< =(<< arr1 [i]<< << arr2 [j]<< endl ; // 您需要更好地设置输出格式。
cout<< arr1 [i ]<< << arr2 [i]<< << arr2 [i + 1]<< \ n;
cout<<< arr1 [i]<< << ; arr2 [i]<< << arr2 [i + 2] << \ n;
cout<<< arr1 [i]<< << ; arr2 [i + 1]<< << arr2 [i + 2]<< \ n;
cout<<< arr1 [i]<< << ; arr2 [i]<< << arr2 [i + 1] << << arr2 [i + 2]<< < span class =code-string> \ n;

}
return 0 ;
} // 您似乎错过了一个结束括号。
}


Q: Array 1={1,2,3} Array 2={4,5,6}
2n-1=2(pow 3)-1=7
2n-1=2(pow 3)-1=7
7*7 =49

Output Need like that......... Any one can help me thanks
---------------------------------------------------------------------------------
C1=(1,4) C2=(1,5) C3=(1,6) C4=(1,4,5) C5=(1,4,6) C6=(1,5,6) C7=(1,4,5,6)

C8=(2,4) C9=(2,5) C10=(2,6) C11=(2,4,5) C12=(2,4,6) C13=(2,5,6) C14=(2,4,5,6)

C15=(3,4) C16=(3,5) C17=(3,6) C18=(3,4,5) C19=(3,4,6) C20=(3,5,6) C21=(3,4,5,6)

C22=(1,2,4) C23=(1,2,5) C24=(1,2,6) C25=(1,2,4,5) C26=(1,2,4,6) C27=(1,2,5,6) C28=(1,3,4)
C29=(1,3,5) C30=(1,3,6) C31=(1,3,4,5) C32=(1,3,4,6) C33=(1,3,5,6)

C34=(2,3,4) C35=(2,3,5) C36=(2,3,6) C37=(2,3,4,5) C38=(2,3,4,6) C39=(2,3,5,6) C40=(1,2,4,5,6) C41=(1,3,4,5,6) C42=(2,3,4,5,6)

C43=(1,2,3,4) C44=(1,2,3,5) C45=(1,2,3,6) C46=(1,2,3,4,5) C47=(1,2,3,4,6) C48=(1,2,3,5,6) C49=(1,2,3,4,5,6)

i try this code but it wrong....


#include <iostream>
using namespace std;


int main() {
	int i,j;
		int arr1[]={1,2,3};
		int arr2[]={4,5,6};
	for (i=0; i<3; i++){
		for(j=0; j<3; j++)
			cout<<arr1[i]<<", "<<arr2[j]<<endl;
			cout<<arr1[i]<<", "<<arr2[i]<<", "<<arr2[i+1]<<"\n";
			cout<<arr1[i]<<", "<<arr2[i]<<", "<<arr2[i+2]<<"\n";
			cout<<arr1[i]<<", "<<arr2[i+1]<<", "<<arr2[i+2]<<"\n";
			cout<<arr1[i]<<", "<<arr2[i]<<", "<<arr2[i+1]<<", "<<arr2[i+2]<<"\n";

	}
	return 0;
}

解决方案

This is an interesting question. The solution to this problem is much more complex than it sounds. It took me more than an hour to figure out an algorithm.

Here's the code :

#include <iostream>
using namespace std;

//a helper function used by comb().
void print_arr(int *arr, size_t beg, size_t size)
{
	if(size < 1)return;

	for(int i=beg; i < size; i++)
	{
		cout << arr[i];
		cout << ",";
	}

}


void comb(int* a, int *b)
{
	int j=1;

	int al_pos = 0;
	int al_start = 1;

	int k=1;
	int bl_pos = 0;
	int bl_start = 1; 

	while(true)
	{

		if(j > 3)//j==4
		{
			
			al_pos++;
			j = al_pos + 1;

			if(al_pos > 1)//l_pos == 2
			{
				al_start++;
			}
			
		}


		k=1;
		bl_pos = 0;
		bl_start = 1; 

		while(true)
		{
			if(k > 3)//k==4
			{
			
				bl_pos++;
				k = bl_pos + 1;

				if(bl_pos > 1)//bl_pos == 2
				{
					bl_start++;
				}
			
			}

			if(al_start > 2)//l_start ==3
			{
				print_arr(a, 0, 2);
				cout << a[2] << ",";
				
			}
			else
			{
				print_arr(a, al_start-1, al_pos);
				cout << a[j-1] << ",";

			}

			if(bl_start > 2)
			{
				print_arr(b, 0, 2);
				cout << b[2] << endl;
				break;
			}

			print_arr(b, bl_start-1, bl_pos);
			cout << b[k-1] << endl;

			k++;
		}

		if(al_start > 2)
			break;

		j++;
		
	}
}


int main()
{
	int a[3] = {1, 2, 3};
	int b[3] = {4, 5, 6};


	comb(a, b);

        return 0;
}


int main()
{
	int i,j, k = 0;
	int arr1[]={1,2,3};
	int arr2[]={4,5,6};
	for (i=0; i<3; i++)
         {
		for(j=0; j<3; j++)
		{
             	    cout"C"<<k<<" = ("<<arr1[i]<<", "<<arr2[j]<<endl" )";  // you need to format your out put better.
		    cout<<arr1[i]<<", "<<arr2[i]<<", "<<arr2[i+1]<<"\n";
		    cout<<arr1[i]<<", "<<arr2[i]<<", "<<arr2[i+2]<<"\n";
		    cout<<arr1[i]<<", "<<arr2[i+1]<<", "<<arr2[i+2]<<"\n";
		    cout<<arr1[i]<<", "<<arr2[i]<<", "<<arr2[i+1]<<", "<<arr2[i+2]<<"\n";
 
	        }
	return 0;
         }//It appears that you missed a closing brace.
}


这篇关于如何找到49个组合为2个数组每个数组大小3 ...?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆