[水]ZOJ1168 || POJ1579

来源:互联网 发布:阿里云 centos7 mysql 编辑:程序博客网 时间:2024/06/09 18:17

200次提交了...97题 

2A 按照递归的方式把递推写出来就好,wa了一次因为xyz之中只要有一个比20大或笔0小都要输出f[20][20][20]和f[0][0][0]

=_=注释掉的是我犯沙茶的部分 > <

#include<bits/stdc++.h>using namespace std;int f[22][22][22]={0};void preGao(){    for (int i=0;i<=20;i++)        for (int j=0;j<=20;j++)            for (int k=0;k<=20;k++)                if (i==0||j==0||k==0)                    f[i][j][k]=1;    for (int i=1;i<=20;i++)        for(int j=1;j<=20;j++)            for (int k=1;k<=20;k++)            {                if (i<j && j<k)                    f[i][j][k]=f[i][j][k-1]+f[i][j-1][k-1]-f[i][j-1][k];                else                    f[i][j][k]=f[i-1][j][k]+f[i-1][j-1][k]+f[i-1][j][k-1]-f[i-1][j-1][k-1];            }}int main(){    //freopen("a.in","r",stdin);    preGao();    int x,y,z;    while(cin>>x>>y>>z &&!(x==-1&&y==-1&&z==-1))    {        printf("w(%d, %d, %d) = ",x,y,z);       /* x=max(x,0);y=max(y,0);z=max(z,0);        x=min(x,20);y=min(y,20);z=min(z,20);*/        if (x<=0||y<=0||z<=0)            cout<<1<<endl;        else if (x>20||y>20||z>20)            cout<<f[20][20][20]<<endl;        else            cout<<f[x][y][z]<<endl;    }    return 0;}


0 0