我尝试解决一个问题,你有一个网格h * w,多个标记2 ^ 0,2 ^ 1,...,2 ^ N你需要告诉可能的组合计数,但我我的代码有一个符文时间错误。 例如:
3
1
3
返回:5
他有1x3矩形和3个方形邮票。邮票的边是1,2和4.邮票的好集如下:(1,2),(1,2,4),(1,4),(2,4)和( 4)。
#include <iostream>
using namespace std;
#include<stdio.h>
#include <vector>
#include <math.h>
auto puissance(double N){
double i=0.0;
vector<double>listofp;
while(i<N){
listofp.push_back(pow(2.0,i));
i++;
}
return listofp;
}
void cover(int N,int result) {
//maybe i will need to add another for loop to test out the other combinations
vector<double>listofp=puissance(N);
//is there a recursive way to add this suggested loop
if(result==0){cout<<"+1";}
for(int i=0;i<listofp.size();i++){
cover(N,result-listofp[i]);
}
}
int main()
{
double N=3.0;
int w=1;
int h=3;
int result=w*h;
cover(N,result);
return 0;
}