希望更丰富的展现?使用Markdown
by 1saunoya @ 2019-07-13 17:12:04
@[清风ღ](/space/show?uid=96580) 不好意思,我是新手,只会用c语言写程序,这个哪里错我也不知道
by peiger @ 2019-07-13 17:15:35
```c
#include"stdio.h"
define N 200
int main()
{
int a[N],n,ans=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);//写入数据
for(int i=0;i<n;i++)
{for(int j=0;j<n;j++)
{for(int k=j;k<n;k++)
{if(j!=i&&k!=i&&j!=k)
{if(a[i]==a[j]+a[k])
ans++;}}}}
printf("%d",ans);
return 0; }
```
你的代码...莫非是,没有判重?
by 吾皇 @ 2019-07-13 17:26:35
@[ 吾皇](/space/show?uid=136601) 不是,就是有几组数组测不成功
by peiger @ 2019-07-13 18:04:22
..比如
```
5
1 2 3 4 5
```
这个数据。答案应该是3,你的程序会输出4.
题目里有一句
```
注意,加数和被加数必须是集合中的两个不同的数。
```
by 吾皇 @ 2019-07-13 18:24:34
@[ 吾皇](/space/show?uid=136601) 谢谢,我在看看我的程序
by peiger @ 2019-07-13 20:06:59
@[ 吾皇](/space/show?uid=136601) 我知道自己错误的地方了,但是想不起来解决办法
by peiger @ 2019-07-13 20:18:24
抱歉刚才忙,你可以建一个bool数组m把你记过的a[i]设为true,然后
```cpp
if(a[i]==a[j]+a[k])
if(m[a[i]]==false){
ans++;
m[a[i]]=true;
}
```
by 吾皇 @ 2019-07-13 21:13:18