博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SGU 546 解题报告
阅读量:5331 次
发布时间:2019-06-15

本文共 1368 字,大约阅读时间需要 4 分钟。

题意:给定一个序列,告诉你里面要有多少个0 和 1  要求替换次数最小得出要求序列

解题思路:模拟替换

解题代码:

// File Name: e.c// Author: darkdream// Created Time: 2013年07月17日 星期三 09时41分24秒#include
#include
#include
#include
#include
#include
char str[10000];int visit[10000];int main(){ //freopen("/home/plac/problem/input.txt","r",stdin); //freopen("/home/plac/problem/output.txt","w",stdout); int n, a , b; while(scanf("%d %d %d",&n,&a,&b) != EOF) { memset(str,0,sizeof(str)); scanf("%s",str); int suma = 0 ; int sumb = 0 ; int sum = 0 ; int i,j; for(i = 0 ;i < n;i ++) { if(str[i] == '0') { if(suma != a ) suma ++; else break; } } for(j =0 ;j < n;j ++) { if(str[j] == '1') { if(sumb != b) sumb ++; else break; } } for(; i < n;i ++) { if(str[i] == '0') { if(sumb == b) { str[i] = '2'; sum ++; } else { sum++; str[i] = '1'; sumb ++; } } } for(; j < n; j++) { if(str[j] == '1') { if(suma == a) { sum ++; str[j] = '2'; } else { sum ++; str[j] = '0'; suma ++; } } } for(i = 0 ;i < n;i ++) { if(str[i] == '2') { if(sumb < b) { sum ++; str[i] = '1'; sumb ++; continue; } if(suma < a) { sum ++; str[i] = '0'; suma ++; continue; } } } if(a + b > n ) { printf("-1\n"); } else { printf("%d\n",sum); printf("%s\n",str); } } return 0 ;}
View Code

 

转载于:https://www.cnblogs.com/zyue/p/3198339.html

你可能感兴趣的文章
怎么在某个控制器中判断程序是否在前台或后台
查看>>
第三周vim入门学习1
查看>>
Linux内核分析(第九周)
查看>>
Serlvet学习笔记之一 ——实现servlet的3种方法
查看>>
批处理
查看>>
使用pycharm编写自动化脚本
查看>>
browser-sync启动命令
查看>>
HttpWebRequest请求返回非200的时候 HttpWebResponse怎么接受返回错误提示
查看>>
VBScript 内置函数
查看>>
java打jar包的几种方式详解
查看>>
关于sublime3中package controle不出来的问题
查看>>
groovy
查看>>
对象扩展
查看>>
js学习总结----事件基础
查看>>
7_20 day25 总结
查看>>
Fliter(过滤器)的认识
查看>>
sd 卡驱动--基于高通平台
查看>>
java开发中的那些事(6)------一次ajax调用中的问题
查看>>
34 数组中的逆序对+改进低效归并排序
查看>>
python异常
查看>>