اولین مشکلی که توی کدتون دیده میشه گرفتن اشتباه حافظه تو خط 7-8-9 -15-10 ست
int *p=new int[n];
int *w=new int[n];
float *array1=new float [n];
int *include=new int [n];
اینارو باید بعد از گرفتن n از ورودی و داخل main بزاری فقط تعریفشون بزار global باشه .
(یعنی تو کد شما الان اول حافظه گرفته میشه با یک n الکی بعد main اجرا میشه و n خونده میشه پس چاپ شدن مقدار منفی طبیعیه !)
مشکل دوم توی این خطه :
array1[i]=p[i]/w[i];
این جا ممکنه تقسیم به 0 انجام بشه پس بهتر قبل از تقسیم w چک بشه که 0 نباشه
مشکل بعدی توی sort َشماست Bubble sort به این شکله : (البته بهتره از یک الگوریتم دیگه استفاده کنی به جای Bubble sort ! )
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1;j++)
{
if(array1[j]<array1[j+1])
{
int temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
int temp1=w[j];
w[j]=w[j+1];
w[j+1]=temp;
}
}
}
بعد این که از اون جایی که من دقیق نمی دونم knapsack جیه درباره درستی الگوریتمت دیگه نمی تونم نظر بدم بهتر بود یک توضیح مختصر هم درباره کوله پشتی 0و1 میدادی .