子集和问题.cpp

来自「子集和问题.rar:这是我学算法设计时的总结,包括定长和不定长做法(也就是回朔法」· C++ 代码 · 共 34 行

CPP
34 行
字号
#include "stdio.h"

void main()
{
	int P[9]={10,20,24,25,26,30,34,35,40};
	int n = 512;
	int Test = 90;
	int i,j;
	int Sum;

	for(i = 1; i < n; i++){
		Sum = 0;
		for(j = 0; j < 9; j++){
			Sum = Sum + P[j] * ((i >> j) & 1);
		}
		if(Sum == Test){
			for(j = 0; j < 9; j++){
				if((i >> j) & 1 == 1)
					printf(" %d ",P[j]);
			}
			printf(" \n ");
		}
	}
}
//p[j]-------j==1......
/*
i=1                                                    p0]
i=2                                                    p[1]
=3                                                    0+1
4                                                     p[2]
5                                                     0+ 2
  i=8    (i>>j)&1   8--> 1000  就是计算  sum=3+5;也就是p[2]+p[4]
i=7                 7-->111  就是          sum =2+5      1+   4
i==100;               110010                   =64+32+4    3+ 31 +63

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?