#2039: 詭異的"2"


Leroi (醫官也會寫程式)


程式碼:

 #include<iostream>
#define K 40
using namespace std;
int main()
{
   int i,j,a[K][K]={0};
   for(i=0,j=0;i<K;i++,j++)
     a[0][i]=a[j][0]=1;
   for(i=1;i<K;i++)
     for(j=1;j<K;j++)
       a[i][j]=a[i-1][j]+a[i][j-1];
   int n,h;
   while(cin>>n>>h>>h)
   {
      int ni,nj,I,s=0;

/*
      if(n==1 && h==2)
      {
         cout<<3<<endl;
         continue;
      }

*/
      for(i=1,j=2;i<K;i++,j++)
          if(a[i][j]==n)
          {
             ni=i;
             nj=j;
             break;
          }
      for(i=0,j=0;i<K;i++,j++)
          if(a[i][j]==n)
          {
             ni=i;
             nj=j;
             break;
          }
      if(h%2==0)
      {
         nj-=(h/2);
         ni-=(h/2-1);
         for(i=ni,I=0;i<ni+h && I<h;i++,I++)
           for(j=nj;j<nj+h-I;j++)
             s+=a[i][j];
      }
      else
      {
         ni-=(h-1)/2;
         nj-=(h-1)/2;
         for(i=ni,I=0;i<ni+h && I<h;i++,I++)
           for(j=nj;j<nj+h-I;j++)
             s+=a[i][j];
      }
      cout<<s<<endl;
   }
   system("pause");
   return 0;
}

不知道為什麼

人工輸入"1 2 2"的結果是"3"

送上去的結果卻變成"2"

#2064: Re:詭異的


mix (mix)


我把有修改的地方變色處理了 大概了解一下!

#include<iostream>
#define K 40
using namespace std;
int main()
{
   int i,j,a[K][K]={0};
   for(i=0,j=0;i<K;i++,j++)
     a[0][i]=a[j][0]=1;
   for(i=1;i<K;i++)
     for(j=1;j<K;j++)
       a[i][j]=a[i-1][j]+a[i][j-1];
   int n,h;
   while(cin>>n>>h>>h)
   {
      int ni,nj,I,s=0,ck=0;
      for(i=0,j=1;i<K&&!ck;i++,j++)
          if(a[i][j]==n)
          {
             ni=i;
             nj=j;
             ck++;
             break;
          }
      for(i=0,j=0;i<K&&!ck;i++,j++)
          if(a[i][j]==n)
          {
             ni=i;
             nj=j;
             ck++;
             break;
          }
      if(h%2==0)
      {
         nj-=(h/2);
         ni-=(h/2-1);
         for(i=ni,I=0;i<ni+h && I<h;i++,I++)
           for(j=nj;j<nj+h-I;j++)
             s+=a[i][j];
      }
      else
      {
         ni-=(h-1)/2;
         nj-=(h-1)/2;
         for(i=ni,I=0;i<ni+h && I<h;i++,I++)
           for(j=nj;j<nj+h-I;j++)
             s+=a[i][j];
      }
      cout<<s<<endl;
   }
   system("pause");
   return 0;
}