| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 432 人关注过本帖
标题:想不通丶求解释
只看楼主 加入收藏
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
想不通丶求解释
输入一个N,把1到N的所有数分成两组要求两组中数的和相等,输出一共有几种分发,否则输出0.



我想应该把说有数加起来,和是奇数输出0,如果是偶数我就想不通怎么实现上面的问题
2012-03-13 12:52
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
为什么没人说说呢丶我又没管你要源码

编程之路定要走完……
2012-03-13 16:36
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:4 
什么想不通阿!

用心做一件事情就这么简单
2012-03-13 16:41
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 3楼 小鱼儿c
如果是和是偶数的话丶下面的该怎么判断呢

编程之路定要走完……
2012-03-13 16:42
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 3楼 小鱼儿c
怎么用程序实现   使     两边和相等

编程之路定要走完……
2012-03-13 16:43
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
收藏
得分:4 
程序代码:
#include <stdio.h>

 #include <stdlib.h>

 #define MAXSIZE 100

 void f(int);

 void main()

 {
     int n;
     printf("请输入一个正整数:\n");
     scanf("%d",&n);
     f(n);

 }

void f(int n)

 {
     int i,j,max,m,k,sum=0,flag;
     int stack[MAXSIZE],top=0,visited[MAXSIZE]={0};
     max=n*(n+1)/2;
     if(max%2==1)
    {
         printf("0\n");
         return;
     }
     else max=max/2;
     for(i=1;i<=n;i++)
     {
         stack[top++]=i;
         flag=1;
         sum=0;
         while(top)
         {
             m=stack[--top];
             if (flag)
             {
                 sum+=m;
                 if (sum==max)
                 {
                     visited[m]=1;
                     printf("%4d",m);
                     printf("\n");
                     for(k=1;k<=n;k++)
                     {
                         if(!visited[k])
                         printf("%4d",k);
                         visited[k]=0;
                     }
                     printf("\n***********\n");
                     break;
                 }
             }
             else    sum-=m;
             flag=0;
             for(j=m+1;j<=n;j++)
             {
                 sum+=j;
                 if(sum<max)
                     stack[top++]=j;
                 else if (sum==max)
                 {
                     stack[top]=j;
                     printf("%4d",i);
                     visited[i]=1;
                     for(k=0;k<=top;k++)
                     {
                         visited[stack[k]]=1;
                         printf("%4d",stack[k]);
                     }
                     printf("\n");
                     for(k=1;k<=n;k++)
                     {
                         if(!visited[k])
                         printf("%4d",k);
                         visited[k]=0;
                     }
                     printf("\n***********\n");
                     sum-=j;
                     break;
                 }
                 else
                 {
                     sum-=j;
                     break;
                 }
             }
         }
     }

 }

 

设1到N的和为max, 把1-N分成两组相等的数,就是说每一组的合一定是max/2, 问题转化为连续N个自然数,和为max/2,共有多少种.  这个程序还是有点问题,其实算出一种,就知道对应的另一种了. 可是我不知道怎么少算另一部分.

[ 本帖最后由 share32 于 2012-3-13 17:28 编辑 ]
2012-03-13 16:56
Leisure92
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2012-3-13
收藏
得分:4 
刚开始学C语言,好博大精深哪
2012-03-13 17:01
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:4 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define Nmax 100

int n,i,j,goal,sum,f[Nmax+1][Nmax*(Nmax+1)/4+1];

int main()
{
    scanf("%d",&n);
    sum=n*(n+1)/2; goal=sum/2;
    if (sum%2==1) printf("0\n"); else
    {
                  memset(f,0,sizeof(f));     f[0][0]=1;
                  for (i=1; i<=n; i++)
                    for (j=goal; j>=0; j--)
                      if (j>=i) f[i][j]=f[i-1][j]+f[i-1][j-i]; else f[i][j]=f[i-1][j];
                  printf("%d\n",f[n][goal]/2);
    }
    system("pause");
}
                    
2012-03-13 17:34
shiyunhelin
Rank: 1
来 自:陕西西安
等 级:新手上路
帖 子:2
专家分:4
注 册:2012-3-13
收藏
得分:4 
同意 不是很了解
2012-03-13 18:55
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 6楼 share32
你这个基本差不多了丶原题要输出的是种数 只要最后把种数除以2就是了  谢谢

编程之路定要走完……
2012-03-14 10:56
快速回复:想不通丶求解释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038741 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved