input

output

59

1799

 

 

37

721

 

 

60

1859

 

后面是两组稍微大一点点超过数据范围的

 

100

5099

 

 

600

45299

 

 

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath> 
#include<cstring>
using namespace std;
int board[60];
int ctest[60][60];
int wutong(int x)
{
    double m=sqrt(x);
    if (int(m)==m) {return 1;} else {return 0;}
}
int main()
{
    int n;
    cin>>n;
    memset(board,0,sizeof(board));
    int all=1; int ans=2;board[1]=1; ctest[1][0]=1; ctest[1][1]=1;
                               for (int i=1;i<=60;i++) ctest[i][0]=0;
    while (all<=n)
    {
       int flag=0;
       for (int t=1;t<=all;t++)
           if (wutong(board[t]+ans)==1) {flag=1;board[t]=ans; ctest[t][0]++; ctest[t][ctest[t][0]]=ans; break;cout<<"stone:"<<t<<";ball:"<<ans<<endl;}
       if ((flag==0)&&(all<n)) {all++;board[all]=ans;flag=1;ctest[all][0]++; ctest[all][ctest[all][0]]=ans;}
       if (flag==0) break;
       ans++;
    }
    cout<<ans-1<<endl;
    cout<<'1'<<' '; 
    for (int i=1;i<=n;i++)
    {for (int j=1;j<=ctest[i][0]-1;j++) cout<<ctest[i][j]<<' ';cout<<ctest[i][ctest[i][0]]<<' ';cout<<endl;system("pause");}
    
    return 0;
}

这个是我的打出路径的代码,暂时是错的用来暂存,我一定会弄出对的来!!!!!

 

posted on 2014-06-28 22:24  seekdreamer  阅读(145)  评论(0编辑  收藏  举报