我在做洛谷UVA340,麻烦大神帮我看一下改程序?

#include<bits/stdc++.h>
#define maxn 1010
using namespace std;
int n,x[maxn],y[maxn],sb=0,m[10000],b[10000];
int main(){
    while(scanf("%d",&n) == 1 &&n)
    {
        for(int i = 0; i < n; i++) scanf("%d",&x[i]);
        for(;;){
            int a=0,b=0;
            for(int i = 0; i < n; i++){
              scanf("%d",&y[i]);
              if(x[i] == y[i]) a++;
            } 
            if(y[0] == 0) break;
            for(int d = 1; d <= 9; d++){
            int A=0,B=0;
            for(int i = 0; i < n; i++){
                if(x[i] == d) A++;
                if(y[i] == d) B++;
            }
            if(A < B) b += A;
            else b += B;
            }
            b[10000]= a;
            m[10000]=b-a;
        }
         printf("Game %d:\n",++sb);
         for( int i=0;i<= 10000;i++){
          printf("     (%d,%d)\n",b[i],m[i]);
      }
    }
    return 0;
}

 

 

你要说清楚你具体碰到了什么困难,你的输入是什么, 输出是什么。

//有好多地方存在数组越界的问题
#include<bits/stdc++.h>
#define maxn 1010
using namespace std;
int n,x[maxn],y[maxn],sb=0,m[10000],b[10000];
int main(){
    while(scanf("%d",&n) == 1 &&n)
    {
        for(int i = 0; i < n; i++) scanf("%d",&x[i]);
        for(;;){
            int a=0,b=0;
            for(int i = 0; i < n; i++){
              scanf("%d",&y[i]);
              if(x[i] == y[i]) a++;
            } 
            if(y[0] == 0) break;
            for(int d = 1; d <= 9; d++){
            int A=0,B=0;
            for(int i = 0; i < n; i++){
                if(x[i] == d) A++;
                if(y[i] == d) B++;
            }
            if(A < B) b += A;
            else b += B;
            }
            b[9999]= a;    //b数组最大下标是9999
            m[9999]=b-a;   //m数组最大下标是9999
        }
         printf("Game %d:\n",++sb);
         for( int i=0;i< 10000;i++){    //i不能等于10000
          printf("     (%d,%d)\n",b[i],m[i]);
      }
    }
    return 0;
}

这样先试一下吧

In function 'int main()':
    [Error] invalid types 'int[int]' for array subscript
\Makefile.win    recipe for target '56.o' failed