出结果容易 AC难啊
----------------解决方案--------------------------------------------------------
各位高手指点一下
----------------解决方案--------------------------------------------------------
估计很难有人想做的了..你最好问具体到个人吧..问问燕子
----------------解决方案--------------------------------------------------------
谢谢啊
----------------解决方案--------------------------------------------------------
程序代码:
#include <stdio.h>
#include <string.h>
int _Cnt[2][401];
struct{
int* operator [] (int i){
return _Cnt[i&1];
}
}Cnt;
int main()
{
int n,t;
while(scanf("%d",&n)!=EOF){
memset(_Cnt,0,sizeof(_Cnt));
Cnt[0][0]=1;
for(int i=1;i<=n;i++){
scanf("%d",&t);
for(int j=0;j<=400;j++){
Cnt[i][j]=Cnt[i-1][j]+(j>=t?Cnt[i-1][j-t]:0);
}
}
printf("%d\n",Cnt[n][400]);
}
}
[[it] 本帖最后由 leeco 于 2008-3-16 15:36 编辑 [/it]]
----------------解决方案--------------------------------------------------------
这是我的程序:
#include<stdio.h>
#include<malloc.h>
struct line
{
int n;
int p;
struct line *next;
};
void main()
{
struct line *head;
struct line *p1,*p2;
head=p1=(struct line*)malloc(sizeof(struct line));
head->next=0;
int i=0,a,b,s=0;
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
while(scanf("%d",&p1->p)!=EOF)
{
p1->n=i;
p2=(struct line*)malloc(sizeof(struct line));
p1->next=p2;
p1=p2;
}
p1->next=0;
p1=p2=head;
while(p1->next)
{
a=p1->p;
b=400-a;
p2=p1->next;
while(p2->next)
{
if(b==p2->p)
s++;
p2=p2->next;
}
p1=p1->next;
}
printf("%d",s);
}
----------------解决方案--------------------------------------------------------
他要知道是不是超时间了啊.呵呵..飞燕之家都是这个问题....
----------------解决方案--------------------------------------------------------
leeco你的wrong answer
leeco你的wrong answer ----------------解决方案--------------------------------------------------------
16#能运行吗?
----------------解决方案--------------------------------------------------------
有一个神奇的口袋,总的容积是400
抓住这句,DP之
LZ不DP肯定超时
----------------解决方案--------------------------------------------------------