求算法!
n=1 
 输出: 
 1   2 
 3   4 
 n=2 
 输出: 
 11   12   21   22 
 13   14   23   24 
 31   32   41   42 
 33   34   43   44   
 n=3: 
 111   112   121   122      211   212   221   222    
 113   114   123   124      213   214   223   224    
 131   132   141   142      231   232   241   242 
 133   134   143   144      233   234   243   244   
 311   312   321   322      411   412   421   422    
 313   314   323   324      413   414   423   424 
 331   332   341   342      431   432   441   442 
 333   334   343   344      433   434   443   444 
 希望用for循环输出,不要递归,谢谢!
------解决方案--------------------规律很明显 
 [1 2 
  3 4] 是一个矩阵,不妨当作元矩阵,每次循环都是在上一个矩阵的元素上‘乘’以元矩阵,   
 1*[1 2  =  [11][12] 
    3 4]    [13][14] ...   
 看出来了吧? 
 关键处是定义‘乘’操作算法,goodLuck!   
 :) 
------解决方案--------------------int n = 3; 
             int nn = 1  < < (n * 2); 
             for (int i = 0; i  < nn; i++) 
             { 
                 for (int j = n - 1; j > = 0; j--) 
                 { 
                     Console.Write((i > >  (n + j)) % 2 * 2 + ((i % (1  < < n)) > >  j) % 2 + 1); 
                 } 
                 Console.Write( "  "); 
                 if ((i + 1) % (1  < < n) == 0) Console.WriteLine(); 
             }     
 enjoy
------解决方案--------------------根据雪弓刀矩阵运算的提示想出了如下解法,源码如下供大家参考: 
 #include  "stdafx.h " 
 #include  <string>  
 #include  <vector>  
 #include  <iostream>  
 using namespace std;   
 typedef vector <string>  strVector; 
 struct strMat 
 { 
 	strVector sv; 
 	short r; 
 	short c; 
 };   
 void stringMult(const strMat& M1,strMat& M2) 
 { 
 	strVector sv1=M1.sv; 
 	strVector sv2=M2.sv; 
 	size_t s1=sv1.size(); 
 	size_t s2=sv2.size();   
 	strMat Result; 
 	Result.r=M1.r*M2.r; 
 	Result.c=M1.c*M2.c; 
 	Result.sv.clear(); 
 	Result.sv.resize(s1*s2);   
 	for(short i=0;i <s1;++i) 
 		for(short j=0;j <s2;++j) 
 		{ 
 			string eleStr=sv1[i]+sv2[j]; 
 			short eleR=i/M1.c*M2.r+j/M2.c; 
 			short eleC=i%M1.c*M2.c+j%M2.c; 
 			Result.sv.at(eleR*Result.c+eleC)=eleStr; 
 		} 
 	M2=Result; 
 }   
 void getResult(short& dim,const strMat& mMat) 
 { 
 	char flag=0; 
 	do 
 	{ 
 		cout < < "请输入维数: "; 
 		cin> > dim; 
 		assert(dim> 0 && dim <=20); 
 		if(dim==1) 
 		{ 
 			for(int i=0;i <mMat.r;++i) 
 			{ 
 				for(int j=0;j <mMat.c;++j) 
 					cout < <mMat.sv[i*mMat.c+j] < < "   "; 
 				cout < <endl; 
 			}		 
 		} 
 		else 
 		{ 
 			strMat resultMat=mMat; 
 			for(int i=1;i <dim;++i) 
 				stringMult(mMat,resultMat);  			 
 			for(i=0;i <resultMat.r;++i) 
 			{ 
 				for(int j=0;j <resultMat.c;++j) 
 					cout < <resultMat.sv[i*resultMat.c+j] < < "   "; 
 				cout < <endl; 
 			}		 
 		} 
 		cout < < "是否退出程序(y/Y)? ";