c语言中1、1.0、'1'、"1",都是有区别的。1是整数1.0是实数'1'是字符"1"是字符串
int是c语言基本数据类型之一,是整型的意思。 C语言中,有多种不同的数据... 一起跟随小编过来看看吧 01“\ 0 ”在 c语言中 代表“字符串结束符”。
01背包问题就是有个容量为W的包,然后有一堆的物品(1...n),其中wi、vi分别为第i个物品的重量和价值,现在需要求的就是使得包中所装的物品尽可能的价值高。那么这个物品放不放在包中对应取值0or
1。其算法为动态规划,需要证明最优子结构性质。用s[i][j]表示只有前i个物品且包容量为j时所能等到的最大价值,而有递归式
s[i][j]=
s[i-1][j],
wi>j
max{s[i-1][j],s[i-1][j-wi]+vi},
wi<=j
s[0][j]=0
1<=j<=W
s[i][0]=0
1<=i<=n
所以不论用什么语言实现,就是计算上面的式子,最终求得s[n][W],上面的式子很好用递推实现的,这个是自底向上的,就是两层for;你也可以用栈实现自顶向下的,这个是记录式的方法。
以上的W是只考虑整数的。
#include<stdio.h>void main()
{
int i,j,k,l,M0=0,M1=0
char N[30]
scanf("%s",N[30]) //有下标就是这个元素了
for(i=0N[i]!='\0'i++)
{
if(N[i]==0) //这里是不是少了一对单引号
{
k=0
for(N[i]=='0'i++)//逻辑有问题了,如果你前面找0的时候 0前面有1怎么办?
k++
if(k>M0)
M0=k
}
if(N[i]==1) // 同上,引号
{
l=0
for(N[i]=='1'i++)//逻辑问题
l++
if(l>M1)
M1=l
}
}
printf("%d,%d",M0,M1)
}
// 先找 0, 然后再 找 1, 都从第一个元素开始找 不能接着后面找
//不知道是你代码写太乱 还是我看错了