33,008
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
int select(int a[],int n)
{
int i=0,j=0,k=0;
int temp;
int flag=0;
int s=0;
for(i=0;i<n;++i)
for(j=0;j<n;j++)
{
if(a[i]>a[j])
{
temp=a[i]-a[j];
flag=0;
for(k=0;k<n;k++)
{
if(a[k]==temp&&k!=j)
{
s++;
flag=1;
}
if(flag==1)
break;
}
if(flag==1)
break;
}
}
return s;
}
int main()
{
int a[100];
int b[100];
int n;
int i=0;
int j=0;
int num;
scanf("%d",&num);
for(j=0;j<num;j++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
b[j]=select(a,n);
}
for(j=0;j<num;j++)
printf("%d\n",b[j]);
return 0;
}
这是我的代码,但是提交是wronganswer,在vc上编译运行没错啊,难道是是我格式错了,我用数据去检测也没错啊??why??#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define MAXN 110
int a[MAXN];
int main()
{
int Cases;
scanf("%d", &Cases);
while (Cases--)
{
int N;
int i, j, k;
scanf("%d", &N);
for (i = 0; i < N; ++i)
{
scanf("%d", &a[i]);
}
sort(a, a + N);
int Ans = 0;
for (k = 0; k < N; ++k)
{
for (i = 0, j = N - 1; i < j; )
{
if (i == k || a[i] + a[j] < a[k])
{
++i;
}
else if (j == k || a[i] + a[j] > a[k])
{
--j;
}
else // a[i] + a[j] == a[k] && i != k && i j != k
{
++Ans;
break;
}
}
}
printf("%d\n", Ans);
}
}
#include<stdio.h>
int select(int a[],int n)
{
int i=0,j=0,k=0;
int temp;
int flag=0;
int s=0;
int tag=0;
for(i=0;i<n;++i)
for(j=0;j<n;j++)
{
if(a[i]>a[j])
{
temp=a[i]-a[j];
flag=0;
for(k=0;k<n;k++)
{
if(a[k]==temp&&k!=j)
{
s++;
flag=1;
}
if(flag==1)
break;
}
if(flag==1)
break;
}
}
//判断有多个0的情况
for(i=0;i<n;i++)
{
if(a[i]==0)
tag++;
}
if(tag>=3)
s+=tag;
return s;
}
int main()
{
int a[100];
int b[100];
int n;
int i=0;
int j=0;
int num;
scanf("%d",&num);
for(j=0;j<num;j++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
b[j]=select(a,n);
}
for(j=0;j<num;j++)
printf("%d\n",b[j]);
return 0;
}
这回我改了加上了判断有多个0的情况,感慨是打算先排序在求s,后来感觉复杂应该是一样的