排序後尋找符合條件的
通過代碼如下:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int laber[16];
int main()
{
int n,len,tempa;
int result;
cin>>n;
while(n>0)
{
len= 0;
result =0;
while(true)
{
cin>>tempa;
if(tempa ==0)
{
break;
}
laber[len] = tempa;
++len;
}
sort(laber,laber+len);
for(int k=0;k<len;++k)
{
for(int k1=k+1;k1<len;++k1)
{
if(laber[k1] == 2*laber[k])
{
++result;
}
}
}
printf("%d\n",result);
--n;
}
return 0;
}
但是排序換成自己的就出錯了,暫時沒有檢查出來得.
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define MAX 1000
int a[MAX];
int laber[16];
int main()
{
int n,len,tempa;
int result;
cin>>n;
while(n>0)
{
for(int k=0;k<MAX;++k)
{
a[k] = 0;
}
for(int k=0;k<16;++k)
{
[k] = 0;
}
len= 0;
result =0;
while(true)
{
cin>>tempa;
if(tempa ==0)
{
break;
}
a[tempa] = 1;
++len;
}
int i =0,j=0;
while(j<len)
{
if(a[i] == 1)
{
laber[j] = i;
++j;
}
++i;
}
for(int k=0;k<len;++k)
{
for(int k1=k+1;k1<len;++k1)
{
if(laber[k1] == 2*laber[k])
{
++result;
}
}
}
printf("%d\n",result);
--n;
}
return 0;
}