本文整理汇总了C++中comb函数的典型用法代码示例。如果您正苦于以下问题:C++ comb函数的具体用法?C++ comb怎么用?C++ comb使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了comb函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cal_delta
int cal_delta(int h,int alpha,int beta) //calculate the delta of inter_polynomial, c is inter_poly[i] and t is tk
{
int delta=0,delta_temp=0,i,j,flag;
int a,b,x,y;
x=inter_point[0]; //xi=pi
y=inter_point[1]; //yi=ri
for(j=0;j<poly_Ysize; j++)
{
for(i=0;i<poly_Xsize;i++)
{
if( (inter_poly[h][j][i] != 0) && (j>=beta) && (i>=alpha) )
{
a=i;
b=j;
flag= ((int)comb(a,alpha)) * ((int)comb(b,beta));
// if flag is even number , delta_temp is equal to 0
// if flag is odd number, delta_temp can be calculated to the delta
if( (flag%2) !=0 )
{
delta_temp=mul(inter_poly[h][j][i],power(x,(a-alpha)));
delta_temp=mul(delta_temp,power(y,(b-beta)));
delta= add(delta,delta_temp);
}
}
}
}
return delta;
}
示例2: comb
void comb(int s, int n, int m)
{
int i;
if (s >= n || flag==1)
return ;
if (top == m)
{
if (flag==queue[m-2] && m>1)
return ;
for (i = 0; i < m; i++)
{
printf("%d", queue[i]);
ss = ss + e0[queue[i]] ;
}
printf("\t");
if( (1-sigma/temperature * (ss + (NPARTICLE - m) * e0[0])) > 0)
{
// for (i = 0; i < m; i++)
// {
// printf("%d", queue[i]);
// }
// printf("\t");
partition[q-1] = partition[q-1] + pow((1-sigma/temperature * (ss + (NPARTICLE - m) * e0[0])),1/sigma);
ppartition[q-1] = ppartition[q-1] + pow((1-sigma/temperature * (ss + (NPARTICLE - m) * e0[0])),1/sigma+1);
// printf("(1-sigma/temperature*(ss+(NPARTICLE-m)*e0[0])^(1/sigma)=");
printf("%2.2e",pow((1-sigma/temperature * (ss + (NPARTICLE - m) * e0[0])),1/sigma) );
printf("\t");
printf("%2.2e\n",(1-sigma/temperature * (ss + (NPARTICLE - m) * e0[0])) );
flag=queue[m-2];
flag=0;
}
else
{
// goto jump;
partition[q-1] = partition[q-1] + 0.0;
ppartition[q-1] = ppartition[q-1] + 0.0;
printf("\t");
printf("\t");
printf("%2.2e\n",(1-sigma/temperature * (ss + (NPARTICLE - m) * e0[0])) );
flag=1;
}
sum=sum+1;
ss = 0.0;
return ;
}
queue[top++] = array[s];
// if (flag==queue[m-2])
// return ;
comb(s, n, m);
top--;
comb(s+1, n, m);
}
示例3: comb
int comb(int n,int r)
{
if(r==0||r==n)
return 1;
else
return comb(n-1,r-1)+comb(n-1,r);
}
示例4: main
int main()
{
int monsters;
int skills;
printf("How many monsters do you have?: " );
scanf("%i", &monsters);
printf("How many skillups do you want?: ");
scanf("%i", &skills);
long long combinations = comb(monsters, skills);
// printf("Done with comb");
long double answer = 0;
for(int i = skills; i <= monsters; i++)
{
answer += noSkill(monsters - i) * yesSkill(i) * comb(monsters, i);
printf("%Lf answer\n", answer);
}
answer *= 100;
// double answer = noSkill*yesSkill*combinations*100;
//printf("%f noSkill\n", noSkill);
//printf("%f yesSkill\n", yesSkill);
printf("You have a %Lf%% chance to get at least %i skillups out of %i monsters\n", answer, skills, monsters);
return -1;
}
示例5: comb
void comb(int s, int n, int m)
{
int i;
if (s >= n)
return ;
if (top == m)
{
for (i = 0; i < m; i++)
{
printf("%d", queue[i]);
// ss = ss + queue[i] ;
}
// printf("%d", ss);
printf("\t");
sum=sum+1;
ss = 0.0;
return ;
}
queue[top++] = array[s];
comb(s, n, m);
top--;
comb(s+1, n, m);
}
示例6: main
//===========================
int main(void) {
setvbuf(stdout, NULL, _IONBF, 0);
FILE *outPutFile;
int n;
int r;
char buffer[BUFSIZ+1];
outPutFile = fopen("comb.txt", "w");
puts("Combinatorials"); /* prints !!!Hello World!!! */
n = 0;
r = 0;
do{
printf("Enter value one:");
fprintf(outPutFile, "Enter value one:");
n = atoi(gets(buffer));
fprintf(outPutFile,"%d", n);
//printf("\n");
printf("Enter value two:");
fprintf(outPutFile, "Enter value two:");
r = atoi(gets(buffer));
fprintf(outPutFile,"%d", r);
//printf("\n");
if(check(n, r)){
printf("comb %d\n", comb(n, r));
fprintf(outPutFile,"comb %d\n", comb(n, r));
}
}while((r > 0)&&( n > 0));
return EXIT_SUCCESS;
}
示例7: comb
int comb(int a, int n)
{
if(a == 0) return 1;
if(a < 0) return 0;
if(n == 0) return 0;
return comb(a, n - 1) + comb(a - coins[NUM - n][1], n);
}
示例8: comb
long long comb(int i, int j)
{
if(i<0||j<0) return 1;
if(Comb[i][j])
return Comb[i][j];
if(!i||!j||i==j)
return Comb[i][j]=1;
return Comb[i][j]=comb(i-1,j)+comb(i-1,j-1);
}
示例9: comb
int comb (int a, int b) {
if (dp[a][b] != 0)
return dp[a][b];
if (a < b)
return -1;
if (a == b || b == 0) {
dp[a][b] = 1;
} else {
dp[a][b] = comb(a-1, b-1) + comb(a-1, b);
}
return dp[a][b];
}
示例10: comb
unsigned long long int comb(int n,int k)
{
if(arr[n][k])
{
return arr[n][k];
}
if(k==1 || n-k==1)
return n;
if(n==k)
return 1;
return (arr[n][k]=comb(n-1,k-1)+comb(n-1,k));
}
示例11: comb
//setter
void Curve::setCurve(vector<Point> points) {
table.clear();
int n = points.size();
int x, y, u;
for (float i=0;i<1;i+=0.0001) {
x = 0; y = 0;
for (u=0;u<n;u++) {
x += comb(n-1,u)*pow(i,u)*pow(1-i,n-1-u)*points[u].getAbsis();
y += comb(n-1,u)*pow(i,u)*pow(1-i,n-1-u)*points[u].getOrdinat();
}
table.push_back(Point(x,y));
}
}
示例12: comb
void comb(int pool, int need, marker chosen, int at)
{
if (pool < need + at) return; /* not enough bits left */
if (!need) {
/* got all we needed; print the thing. if other actions are
* desired, we could have passed in a callback function. */
for (at = 0; at < pool; at++)
if (chosen & (one << at)) combs = combs + 1;
return;
}
/* if we choose the current item, "or" (|) the bit to mark it so. */
comb(pool, need - 1, chosen | (one << at), at + 1);
comb(pool, need, chosen, at + 1); /* or don't choose it, go to next */
}
示例13: main
void main() {
IplImage* img;
CvCapture* cap=cvCaptureFromCAM(0);
cvNamedWindow("Line Counter", 1);
CvFont* font1=new CvFont;
CvFont* font2=new CvFont;
cvInitFont(font1, CV_FONT_HERSHEY_SIMPLEX, 0.5f, 1.0f, 0, 3, 8);
cvInitFont(font2, CV_FONT_HERSHEY_SIMPLEX, 0.5f, 1.0f, 0, 2, 8);
int val=0, axx=0, bxx=0;
char text[8];
for (;;) {
img = cvQueryFrame(cap);
if (!img) break;
IplImage* gray1=cvCreateImage(cvSize(img->width, img->height), 8, 1);
IplImage* edge1=cvCreateImage(cvSize(img->width, 16), 8, 1);
cvCvtColor(img, gray1, 7);
extract(gray1, edge1);
dy(edge1, edge1);
cvThreshold(edge1, edge1, 10, 255, CV_THRESH_BINARY_INV);
val=count(edge1);
if (val==0&&axx==0) { axx=1; }
if (val==2&&axx==1) { axx=0; bxx++; }
sprintf(text, "%i", bxx);
comb(gray1, edge1);
cvPutText(gray1, text, cvPoint(10, 160), font1, cvScalarAll(255));
cvPutText(gray1, text, cvPoint(10, 160), font2, cvScalarAll(0));
cvShowImage("Line Counter", gray1);
if (cvWaitKey(5) > 0) break;
cvReleaseImage(&gray1);
cvReleaseImage(&edge1);
}
}
示例14: main
int main(void) {
int Nj = 4;
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::mt19937_64 gen(seed);
std::uniform_real_distribution<float> dis(0, 1);
std::vector<float> v;
for(int i = 0; i < Nj; ++i) v.push_back(dis(gen));
std::cout << "individual probabilities:" << std::endl;
for(auto val: v) std::cout << std::fixed << val << "\t";
std::cout << std::endl << std::endl;
float sum = 0.0;
for(int Ntag = 0; Ntag <= Nj; ++Ntag) {
std::cout << "combined probabilities:" << std::endl;
float combi = comb(v, Nj, Ntag);
std::cout << std::endl << "the sum of combined probability:\t";
std::cout << combi << std::endl;
sum += combi;
}
std::cout << std::endl << "overall sum of probabilities:\t" << sum << std::endl;
return EXIT_SUCCESS;
}
示例15: gen
int gen(int m, int n, pair<int, int>& p, unordered_map<string, vector<string>>& source, unordered_map<string, string>& refer) {
string pos = to_string(p.first) + "#" + to_string(p.second);
refer[pos] = pos;
source[pos] = vector<string>(1, pos);
vector<string> List;
if (p.first > 0) {
string tempPos = to_string(p.first-1) + "#" + to_string(p.second);
List.push_back(tempPos);
}
if (p.first < m-1) {
string tempPos = to_string(p.first+1) + "#" + to_string(p.second);
List.push_back(tempPos);
}
if (p.second > 0) {
string tempPos = to_string(p.first) + "#" + to_string(p.second-1);
List.push_back(tempPos);
}
if (p.second < n-1) {
string tempPos = to_string(p.first) + "#" + to_string(p.second+1);
List.push_back(tempPos);
}
for (string l : List) comb(source, refer, l, pos);
return source.size();
}