希望各位前輩可以指點一下,我的演算法還不夠好
或者各部分的寫法哪裡可以再更好,也都懇請高手指教了><
/*************************************************************
Author: walking
Date: 2013_10_09
Description: lucky dip game
Input: N(amount) Y(range) A(toy_start) B(toy_end)
Output: max_count(best localtions) tmp(maximum dip amount)
*************************************************************/
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){
int N,Y,A,B;
while(cin >> N >> Y){
int A[N],B[N]; //宣告存放A,B座標陣列
memset(A, 0, sizeof(int)*N);
memset(B, 0, sizeof(int)*N);
int max_A = 0 ,tmp1=0;
for(int i=0;i<N;i++){ //輸入各娃娃座標
cin>>A[i]>>B[i];
tmp1=A[i];
if(tmp1>max_A)
max_A=tmp1; //找出最大A值
}
max_A++; //要創建的array為最大A值加1
int left[max_A]; //省下每次宣告10萬大小array的空間
memset(left, 0, sizeof(int)*max_A);
for(int i=0;i<N;i++){ //將所有娃娃的AB值讀入
if((B[i]-A[i])<=Y) //若娃娃不會大於夾子
for(int j=B[i]-Y;j<=A[i];j++){ //則在left陣列內投票可以此娃娃可以夾起的點
if(j>0)
left[j]++;}
}
int max_count=0; //最佳的夾取地點的個數
int maximum=left[0]; //夾到的最多的娃娃個數
for(int k=1;k<max_A;k++)
{
if(left[k]==maximum)
max_count++;
if(left[k]>maximum)
{
maximum=left[k];
max_count=1;
}
}
cout <<max_count<<" "<<maximum<<endl;
}
}
希望各位前輩可以指點一下,我的演算法還不夠好
或者各部分的寫法哪裡可以再更好,也都懇請高手指教了><
/*************************************************************
Author: walking
Date: 2013_10_09
Description: lucky dip game
Input: N(amount) Y(range) A(toy_start) B(toy_end)
Output: max_count(best localtions) tmp(maximum dip amount)
*************************************************************/
#include
#include
#include
#include
using namespace std;
int main(){
int N,Y,A,B;
while(cin >> N >> Y){
int A[N],B[N]; //宣告存放A,B座標陣列
memset(A, 0, sizeof(int)*N);
memset(B, 0, sizeof(int)*N);
int max_A = 0 ,tmp1=0;
for(int i=0;i
cin>>A[i]>>B[i];
tmp1=A[i];
if(tmp1>max_A)
max_A=tmp1; //找出最大A值
}
max_A++; //要創建的array為最大A值加1
int left[max_A]; //省下每次宣告10萬大小array的空間
memset(left, 0, sizeof(int)*max_A);
for(int i=0;i
if((B[i]-A[i])<=Y) //若娃娃不會大於夾子
for(int j=B[i]-Y;j<=A[i];j++){ //則在left陣列內投票可以此娃娃可以夾起的點
if(j>0)
left[j]++;}
}
int max_count=0; //最佳的夾取地點的個數
int maximum=left[0]; //夾到的最多的娃娃個數
for(int k=1;k
{
if(left[k]==maximum)
max_count++;
if(left[k]>maximum)
{
maximum=left[k];
max_count=1;
}
}
cout <
}
}
您的答案為: 0 正確答案為: 1 8263
您的答案為: 0 正確答案為: 2 3904
您的答案為: 0 正確答案為: 1 69
您的答案為: 0 正確答案為: 16 2784
您的答案為: 0 正確答案為: 3104 9
試試把數字套進測資?