#include <stdio.h>
#define N 20//最大物品数目
struct Stack //栈
{
int s[N];
int top;
}stack;
void Initstack()
{
int i;
for(i=0;i<N;i++) //初始化栈
stack.s[i]=0;
}
void solve(int T, int n)
{
int w[N];
int m,i,j=0,k=0;
for(m=0;m<n;m++)
scanf("%d",&w[m]);
Initstack();
stack.top=0;
do{
while(T>0&&k<=n)
{
if(T>=w[k])
{ //符合条件的背包进栈
stack.s[stack.top++]=k;
T-=w[k];
}
k++; //不符合则考察下一个背包
}
if(T==0)
{ //找到一种答案,输出
printf("第%d组答案:",j+1);
for(i=0;i<stack.top;i++)
{
printf("%d ",w[stack.s[i]]);
}
j++;
printf("\n");
}
k=stack.s[--stack.top]; //找不到答案,则前一个入栈的背包出栈,继续考察下一个背包
stack.s[stack.top]=0;
T+=w[k];
k++;
}while(!(stack.top==0&&k==n)); //当栈空且k==n时,所有可能的组合都考察完毕,退出循环
}
int main() //从N个物品(每个物品重w[k])中选取总重为T的背包,共有多少种选法
{
int T,n; //总重
printf("请输入背包总体积T:");
scanf("%d",&T);
printf("请输入物品个数:");
scanf("%d",&n);
while(n>20)
{
printf("物品最多为20个!请重新输入!\n");
scanf("%d",&n);
}
printf("请输入每个物品的重量:");
solve(T, n);
return 0;
}
怎样通过easyx库将其转换为可视化界面
问题是什么?
你这个怎么可视化
void threadpoolAdd(threadpool*pool,void(*run)(void*),void*arg)
{
if(pool->shutdown)//线程池已经被关闭
{
return;
}
task*t=(task*)malloc(sizeof(task));
t->arg=arg;
t->run=run;
t->next=NULL;
pthread_mutex_lock(&pool->mutexpool);
if(pool->first==NULL)//第一个任务
{
pool->first=t;
pool->end=t;
}
else
{
pool->end->next=t;
pool->end=t;
}
pool->tasksize++;
pthread_cond_signal(&pool->notempty);//唤醒阻塞的线程
pthread_mutex_unlock(&pool->mutexpool);
}