NEFU OJ8 二倍的問題

排序後尋找符合條件的

通過代碼如下:

#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;
}


發佈了73 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章