| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3838 人关注过本帖
标题:石头归并问题
只看楼主 加入收藏
诸神的黄昏
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-4-27
收藏
得分:0 
恩,的确有问题.主要是定义的是char类型的~输10的时候num只会接收第一个1;
可以定义1个2个大小的字符数组,在每组输完 输入下一组的时候通过判断接受的东西 来决定是继续还是退出
如:
int num ;char ch1[2]; ......
scanf("%c",&ch1[0]);
if(ch1[0]==10)
break;
else
scanf("%c",&ch1[1]);
if(ch1[1]==10)
num=ch1[0]-48;
else
num=(ch1[0]-48)*10+(ch1[1]);
但是还有一个问题没解决~就是后面的循环问题.
for(i=0;i<num*num;i++)
不对.
恩 ~这个要换个方式控制循环跳出了...
比如 当 函数里 数组b全部元素反号的时候~等等
呵呵 南京大学的朋友表生气~
我只是想说明学习要自己动手才会有提高~
而且没有针对谁的意思 ~不要误会了哈
2006-05-03 13:35
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
别以为我那么会生气,自信者很难生来自他人的闲气。

主要是“程序是靠写出来的 不是想出来的....”这种观

点真的太错了。如果您坚持这种观念,就很难进步。这

就相当于“大楼是靠民工盖出来的,不是靠图纸画出来

的”。拿图灵奖的主也许开机、打字、上网还不如你我

哩。望您当然包括在下重视理论学习,毕竟站在巨人肩

膀上才能更快前进。


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-03 14:15
诸神的黄昏
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-4-27
收藏
得分:0 

呵呵~我当然也重视理论学习.
不然理论都没有,我写什么呀写~
总之很佩服你这句"自信者很难生来自他人的闲气。
"
以后有不懂的地方还要向你多多学习啊~

2006-05-03 16:23
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(诸神的黄昏)呵呵~我当然也重视理论学习.不然...
巧极了,刚回了您前两天的一个帖子!知您欲攻“数据结构”。放心了。我这人吧,数据结构尤其是“树”和“图”为弱项,否则还能写更好的程序出来。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-03 16:33
youxiaxyz
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-4-5
收藏
得分:0 
15楼说错了,还是11楼的对
2006-05-03 18:18
youxiaxyz
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-4-5
收藏
得分:0 
15楼好像不对
还是11楼的对
2006-05-03 18:48
youxiaxyz
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-4-5
收藏
得分:0 
15楼的好像不对,还是11楼的对
2006-05-03 18:49
youxiaxyz
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-4-5
收藏
得分:0 

按11楼的想法我写了一个程序,请诸位测试
#include<stdio.h>

int main()
{
int i, j, k, p, tag, n, a[100], b[100], c[100];
float t, sum, sumb;
scanf("%d", &n);

while(n) {

sum = 0; sumb = 0;
for(i = 0; i < n; i++) {
scanf("%d", &a[i]);
sum +=a[i];
}

for(i = 0; sumb < sum / 2; i++) {
b[i] = a[i];
sumb += b[i];
}//当大于一半sum时赋给数组b

tag = i;//记录数组b的个数

for(j = 0; i < n; i++, j++)
c[j] = a[i];
t = sumb - sum / 2;//记录数组b与平均数的差值

for(j = 0; j < tag; j++)
for(k = 0; k < n - tag; k++) {
if((b[j] - c[k]) >0 && (b[j] - c[k]) < t) {
t = t - b[j] + c[k];
p = b[j];
b[j] = c[k];
c[k] = p;
j--;
break;
}
if(b[j] < t) {
c[n - tag] = b[j];
t = t - b[j];
for(p = j; p < tag - 1; p++)
b[p] = b[p + 1];
b[p] = 0;
tag--; j--;
break;
}//如果数组b中的值小于t将它给c并且b中值为0或者b中值大于0且小于t则交换
}

printf("%d\n", (int)(2 * t));
scanf("%d", &n);

}
return 0;
}

2006-05-03 18:53
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用youxiaxyz在2006-5-3 18:53:00的发言:

按11楼的想法我写了一个程序,请诸位测试
#include<stdio.h>

6
1
2
4
8
16
32
运行结果达63。WHY?


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-03 19:10
ninanwine
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用–★–在2006-5-3 9:25:00的发言:


应改为如B中元素<=T/2,因为一进一出,双倍关系哦。

是和与一半做差,不是两堆做差


用0-1统治世界!
2006-05-03 21:31
快速回复:石头归并问题
数据加载中...
 
   



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

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