輸入數組長度 n
輸入數組 a[1...n]
輸入查找個數m
輸入查找數字b[1...m]
輸出 YES or NO 查找有則YES 不然NO 。ios
輸入有多組數據。
每組輸入n,而後輸入n個整數,再輸入m,而後再輸入m個整數(1<=m<=n<=100)。數組
若是在n個數組中輸出YES不然輸出NO。緩存
5 1 5 2 4 3 3 2 5 6
YES YES NO
代碼實現:
1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 class Array{ 5 public: 6 int m_length; 7 int* m_numbers; 8 void input() 9 { 10 if(m_length>0) 11 { 12 char c; 13 m_numbers = new int[m_length]; 14 int i=0; 15 while((c=getchar())!='\n') 16 { 17 if(c!=' ') 18 { 19 ungetc(c,stdin); 20 cin>>m_numbers[i++]; 21 } 22 } 23 } 24 } 25 Array(); 26 }; 27 28 Array::Array(){ 29 30 } 31 32 bool reasearch(int a,Array* array) 33 { 34 for(int i=0;i<array->m_length;i++) 35 { 36 if(a==array->m_numbers[i]) 37 return true; 38 } 39 return false; 40 } 41 void output(Array* arrayA,Array* arrayB) 42 { 43 for(int i =0 ; i< arrayB->m_length;i++) 44 { 45 if(reasearch(arrayB->m_numbers[i],arrayA)) 46 cout<<"YES"<<endl; 47 else 48 cout<<"NO"<<endl; 49 } 50 } 51 52 int main() 53 { 54 int number; 55 56 while(scanf("%d",&number)!=EOF) 57 { 58 fflush(stdin); 59 Array* arrayA = new Array(); 60 arrayA->m_length=number; 61 arrayA->input(); 62 int numberB; 63 cin>>numberB; 64 fflush(stdin); 65 Array* arrayB = new Array(); 66 arrayB->m_length=numberB; 67 arrayB->input(); 68 output(arrayA,arrayB); 69 } 70 return 0; 71 }
VC++運行成功spa
問題1:.net
如何一行輸入數組3d
方法一:code
#include<iostream> using namespace std; int main() { int a[50]; int i = 0; char c; while((c=getchar())!='\n') { if(c!=' ')//把這句判斷條件改動 { ungetc(c,stdin); cin>>a[i++]; } } for(int j=0;j<i;j++) { cout<<"a["<<j<<"]:"<<a[j]<<endl; } }
方法二:blog
#include<iostream> using namespace std; int main() { int a[20]; int i = 0; char c; cin>>a[i++]; while((c=getchar())!='\n') { cin>>a[i++]; } for(int j=0;j<i;j++) { cout<<"a["<<j<<"]:"<<a[j]<<endl; } }
問題2:ci
在輸入了第一個數字以後。cin中存在一個流,沒法正確輸入數組get
能夠使用 fflush(stdin);清除緩存流
問題3:如何實現多組數據輸入
參見:http://blog.csdn.net/sxhelijian/article/details/8978850
雖說在VC++上跑起來沒錯,可是在OJ平臺上始終是Runtime Error,實在是不知道怎麼辦。
經過將數據存在txt文件中
#include <iostream> #include <fstream> #include <string> using namespace std; void input_array(int* arrays,string buffer,int number) { // const char* c = new char[number]; //c = buffer.c_str(); int j = 0; for(int i=0;i<buffer.size();i++) { if(buffer[i]!=' ') { arrays[j]=buffer[i]-'0'; j++; } } } bool reasearch(int x,int* arrays,int j) { for(int i =0;i<j;i++) { if(x==arrays[i]) return true; } return false; } void output(int* array_1,int number_1,int* array_2,int number_2) { for(int i = 0;i<number_2;i++) { if(reasearch(array_2[i],array_1,number_1)) cout<<"YES"<<endl; else cout<<"NO"<<endl; } } int main() { ifstream cin("ex.txt"); int number_1,number_2; int* array_1; int* array_2; string buffer; int i = 1; while(getline(cin,buffer)) { if(i%2==1) { number_1=buffer[0]-'0'; array_1 = new int[number_1]; getline(cin,buffer); input_array(array_1,buffer,number_1); i++; } else { number_2=buffer[0]-'0'; array_2 = new int[number_2]; getline(cin,buffer); input_array(array_2,buffer,number_2); i++; output(array_1,number_1,array_2,number_2); } } return 0; }
終於成了!