杭电算法记录 ZJU1195

书上P5

//在书的P5页
#define maxN 21    //这是设备容量,最多设备数为20

int power[maxN];   //用于存储每个设备的功率
int toggle[maxN];  //用于存储设备的开关状态,0号单元是没用的
int n,m;           //设备数和开关次数
int c;             //铁丝的容量

int main(){
        int i,j;
        int count=1;
        while(scanf("%d %d %d",&n,&m,&c) && (n||m||c)){
                //先接收设备的输入
                for(i=1;i<=n;i++){
                        scanf("%d",&power[i]);//输入每个设备的功率
                }
                //将开关数组变成关
                memset(toggle,0,sizeof(toggle)); //第一个参数是指针,0是赋的值
                int max;   //最大功率
                int sum;   //总功率
                //模拟开关操作
                for(i=1;i<=m;i++){
                        scanf("%d",&j);  //接收每次开关操作
                        if(toggle[i]==1){
                                //如果原来是开着的话,就关掉,然后总功率减少
                                toggle[i]=0;
                                sum-=power[i];
                        }
                        else{
                                //如果原来就是关着的话,那么打开,总功率增加
                                toggle[i]=1;
                                sum+=power[i];
                                if(max<sum) max=sum;
                        }
                }
                printf("Sequence  %d\n",count++); //这是进行while循环层输入的次数
                if(max>c) printf("Fuse was blown.\n");
                else{
                        printf("Fuse was not blown.\n");
                        printf("maxiaml power consumption was %d amperes.\n",max);
                }
                printf("\n");
        }
        return 0;
}

猜你喜欢

转载自blog.csdn.net/haohulala/article/details/82806228