一.枚举经典类型
1.枚举不同物品个数
for (int i=1;i<=n;i++)//枚举第一种物品
{
for (int j=1;j<=m//一般可以由i来减少枚举次数;j++)//枚举第二种物品//j先动
{
if (check(i,j))..... . .....;//一般要检查某种性质
}
}
2.枚举区间
for (int i = 1; i <= n; i++)//枚举左端点
{
for (int j = i; j <= n; j++)//枚举右端点(1,1)(1,2)(1,3)...(1,n) j到底时i开始动
{
}
}
3.枚举子矩阵
for (int i = 1; i <= n; i++)//枚举左上角行坐标
{
for (int j = 1; j <= m; j++)//枚举左上角列坐标
{
for (int k = 1; k <= n; k++)//枚举右下角行坐标
{
for (int p = 1; p <= n; p++)//枚举右下角列坐标
{
}
}
}
}
4.枚举长度不同的子串
for (int i = 1; i <= n; i++)//枚举子串长度
{
for (int j = 1; j <= n && j + i - 1 <= n; j++)//枚举左端点
{
string srt = s.substr(j, i);
}
}