C++写的无限循环代码
const int l = 3;
int aa[] = { 1, 2, 3, 5, 7, 9, 11, 13, 15 }, bb[l] = { 0 }, g = l, d = sizeof(aa) / sizeof(aa[0]);
while (bb[0] < d)
{
while (--g)//无限嵌套逐级运算
if (g > 0 && bb[g] >= d)
{
bb[g] = 0;
++bb[g - 1];
std::cout << endl;//附加的显示部分
}
if (bb[l - 1] < d)//显示部分没写循环
{
std::cout << aa[bb[0]] << "+" << aa[bb[1]] << "+" << aa[bb[2]] << "=" << aa[bb[0]] + aa[bb[1]] + aa[bb[2]] << "; ";
if (aa[bb[0]] + aa[bb[1]] + aa[bb[2]] == 30)break;
}
++bb[l - 1];
g = l;
}
原来的嵌套循环写法
int aa[] = { 1, 2, 3, 5, 7, 9, 11, 13, 15 }, a = 0, b = 0, c = 0, d = sizeof(aa) / sizeof(aa[0]);
while (a < d)
{
std::cout << aa[a] << "+" << aa[b] << "+" << aa[c] << "=" << aa[a] + aa[b] + aa[c] << "; ";
if (aa[a] + aa[b] + aa[c] == 30)
{
std::cout << aa[a] << aa[b] << aa[c] << "^_^";
break;
}
if (++c >= d)
{
++b;
c = 0;
std::cout << endl;
}
if (b >= d)
{
++a;
b = 0;
}
}
检查唯一性。
/**/const int l = 3;
int aa[] = { 1, 3, 5, 7, 9, 11, 13, 15 }, bb[l] = { 0 }, g = l, j = 0, t = 0, d = sizeof(aa) / sizeof(aa[0]);
while (bb[0] < d)
{
while (--g)//无限嵌套逐级运算
{
if (g > 0 && bb[g] >= d)
{
bb[g] = 0;
++bb[g - 1];
g = l;//检查唯一序
std::cout << endl;//附加的显示部分
}
j = 0;//检查唯一序
while (!t && j < g) if (bb[j] == bb[g]) t = 1; else ++j;
}
if (!t && bb[l - 1] < d && bb[0] < d)//计算与显示部分没写循环
{
std::cout << aa[bb[0]] << "+" << aa[bb[1]] << "+" << aa[bb[2]] << "=" << aa[bb[0]] + aa[bb[1]] + aa[bb[2]] << "; ";
if (aa[bb[0]] + aa[bb[1]] + aa[bb[2]] == 30)break;
}
++bb[l - 1];
j = t = 0;
g = l;
}
全面循环代码
/**/const int 数量 = 8;
int 数据[] = { 1, 3, 5, 7, 9, 11, 13, 15 }, 嵌套[数量] = { 0 }, 逐级 = 数量, 检查 = 0, 状态 = 0, 长度 = sizeof(数据) / sizeof(数据[0]);
while (嵌套[0] < 长度)
{
while (--逐级)//无限嵌套逐级运算
{
if (逐级 > 0 && 嵌套[逐级] >= 长度)
{
嵌套[逐级] = 0;
++嵌套[逐级 - 1];
逐级 = 数量;//检查唯一序
//std::cout << endl;附加的显示部分
}
检查 = 0;//检查唯一序
while (!状态 && 检查 < 逐级) if (嵌套[检查] == 嵌套[逐级]) 状态 = 1; else ++检查;
}
if (!状态 && 嵌套[数量 - 1] < 长度 && 嵌套[0] < 长度)//计算与显示部分没写循环
{
检查 = 0;//重复利用的变量
while (逐级 < 数量)
{
检查 += 数据[嵌套[逐级]];
std::cout << (数据[嵌套[逐级]] > 9 ? "" : "0") << 数据[嵌套[逐级]] << (逐级 >= 数量 - 1 ? " = " : "+");
++逐级;
}
std::cout << (检查 > 9 ? "" : "0") << 检查 << "; ";
//if (检查 == 30)break;
}
++嵌套[数量 - 1];
检查 = 状态 = 0;
逐级 = 数量;
}
运行实例
另外答复了提问https://bbs.csdn.net/topics/392520005
int 数据[] = { 1, 2, 3, 5, 7, 9, 11, 13, 15 }, 长度 = sizeof(数据) / sizeof(数据[0]),
嵌套[sizeof(数据) / sizeof(数据[0])] = { 0 }, 逐级 = 长度, 检查 = 0, 状态 = 0,
最大值 = 0, 取值 = 0;
while (嵌套[0] < 长度)
{
while (--逐级)//无限嵌套逐级运算
{
if (逐级 > 0 && 嵌套[逐级] >= 长度)
{
嵌套[逐级] = 0;
++嵌套[逐级 - 1];
逐级 = 长度;
//std::cout << endl;附加的显示部分
}
检查 = 0;//检查唯一序
while (!状态 && 检查 < 逐级) if (嵌套[检查] == 嵌套[逐级]) 状态 = 1; else ++检查;
}
if (!状态 && 嵌套[长度 - 1] < 长度 && 嵌套[0] < 长度)//计算与显示部分
{
检查 = 0;//重复利用的变量
while (逐级 < 长度)
{
if (检查 == 0)检查 += 数据[嵌套[逐级]];
else
{
取值 = 数据[嵌套[逐级]];
while (取值) { 检查 *= 10; 取值 /= 10; }
检查 += 数据[嵌套[逐级]];
}
if (最大值 < 检查)最大值 = 检查;
//std::cout << (数据[嵌套[逐级]] > 9 ? "" : "0") << 数据[嵌套[逐级]] << (逐级 >= 长度 - 1 ? " = " : "+");
++逐级;
}
//std::cout << (检查 > 9 ? "" : "0") << 检查 << "; ";
}
++嵌套[长度 - 1];
检查 = 状态 = 0;
逐级 = 长度;
}std::cout << 最大值;