简单题,不过我犯了个错误
Your program exited with exit status `2'. 返回值要为0 .USACO
#include <stdio.h> #include <stdlib.h> #include<string.h> void deal(int visit[][370],int speed[],int t,int i) { int ars[370]={0}; int angle; int j; angle=speed[i]*t; memcpy(ars,visit[i],sizeof(ars)); for(j=0;j<360;j++) { visit[i][(j+angle)%360]=ars[j]; //转角度后重新赋值 } } int main() { FILE *fin=fopen("spin.in","r"); FILE *fout=fopen("spin.out","w"); int speed[10]={0}; int wedge[10]={0}; int wstart[10][10]={0},dis[10][10]={0}; int i,j,p,t; int check=0; int visit[10][370]={0},visit1[10][370]={0}; //记录是否能通过 for(i=0;i<5;i++) { fscanf(fin,"%d %d",&speed[i],&wedge[i]); for(j=0;j<wedge[i];j++) { fscanf(fin,"%d %d",&wstart[i][j],&dis[i][j]); for(p=wstart[i][j];p<=wstart[i][j]+dis[i][j];p++) { visit[i][p%360]=1; } } } for(t=0;t<360;t++) //速度为整数故最多360S了 { memcpy(visit1,visit,sizeof(visit)); //每次修理后值都会改变,所以要重新赋值下 for(i=0;i<5;i++) { deal(visit1,speed,t,i); //每个时间都处理下数组 } for(j=0;j<360;j++) { for(p=0;p<5;p++) { if(!visit1[p][j]) break; if(p==4&&visit1[p][j]) //表示有五个是有缺口的 { check=1; fprintf(fout,"%d\n",t); return 0; } } } } if(!check) { fprintf(fout,"none\n"); } return 0; }