C Condensing嵌套循环
发布时间:2020-12-16 03:36:55 所属栏目:百科 来源:网络整理
导读:我有这些for循环. // output all possible combinationsfor ( int i1 = 0; i1 = 2; i1++ ) { for ( int i2 = 0; i2 = 2; i2++ ) { for ( int i3 = 0; i3 = 2; i3++ ) { for ( int i4 = 0; i4 = 2; i4++ ) { for ( int i5 = 0; i5 = 2; i5++ ) { for ( int i6
我有这些for循环.
// output all possible combinations for ( int i1 = 0; i1 <= 2; i1++ ) { for ( int i2 = 0; i2 <= 2; i2++ ) { for ( int i3 = 0; i3 <= 2; i3++ ) { for ( int i4 = 0; i4 <= 2; i4++ ) { for ( int i5 = 0; i5 <= 2; i5++ ) { for ( int i6 = 0; i6 <= 2; i6++ ) { for ( int i7 = 0; i7 <= 2; i7++ ) { //output created words to outFile outFile << phoneLetters[n[0]][i1]<< phoneLetters[n[1]][i2] << phoneLetters[n[2]][i3]<< phoneLetters[n[3]][i4] << phoneLetters[n[4]][i5]<< phoneLetters[n[5]][i6] << phoneLetters[n[6]][i7] << " "; if ( ++count % 9 == 0 ) // form rows outFile << std::endl; } } } } } } } 它看起来很糟糕,但我知道从哪里开始凝聚它们太多了. 有人可以给我一两个指针,这样我可以使这段代码更整洁吗? 解决方法
你在七个级别上索引0,1和2.这可能不是非常有效,但是这个怎么样:
int i1,i2,i3,i4,i5,i6,i7; int j; for (int i = 0; i < 2187; i++) { // 0 through 2186 represent all of the ternary numbers from // 0000000 (base 3) to 2222222 (base 3). The following // pulls out the ternary digits and places them into i1 // through i7. j = i; i1 = j / 729; j = j - (i1 * 729); i2 = j / 243; j = j - (i2 * 243); i3 = j / 81; j = j - (i3 * 81); i4 = j / 27; j = j - (i4 * 27); i5 = j / 9; j = j - (i5 * 9); i6 = j / 3; j = j - (i6 * 3); i7 = j; // print your stuff } 或者,根据用户315052在评论中的建议: int d[7]; for (int i = 0; i < 2187; i++) { int num = i; for (int j = 6; j >= 0; j--) { d[j] = num % 3; num = num / 3; } // print your stuff using d[0] ... d[6]] } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |