有人可以描述此任务的求解算法吗?:
Ivan是Berland州立大学(BSU)的学生。 Berland一周有n天,每几天Ivan都会在大学里上某些课。
在Berland的每一天都有m个小时的工作时间,而大学的每一节课恰好持续一小时。如果某天Ivan的第一堂课是在第i个小时,而最后一堂课是在第j个小时,那么他在这一天会在大学里花费j-i + 1个小时。如果某天没有课程,那么Ivan将留在家里,因此在大学里度过了0个小时。
伊凡(Ivan)不喜欢在大学里呆很多时间,因此他决定跳过一些课程。在一周中,他最多不能跳过k堂课。在决定他应该跳过哪些课程以及应该参加哪些课程之后,Ivan每天都会在他不跳过的第一堂课开始之前进入大学,并在他决定参加的上一堂课结束后离开大学。如果Ivan在某一天跳过所有课程,那一天他根本就不会去上大学。
给出n,m,k和Ivan的时间表,如果他不能跳过k堂以上的课程,您能确定他一周必须在大学里度过的最少小时数吗?
第一行包含三个整数n,m和k(1≤n,m≤500,0≤k≤500)— Berland周中的天数,每天的工作时间数以及伊万可以分别跳过的课程数量。
然后是n行,第i行包含m个字符的二进制字符串。如果第i行中的第j个字符为1,则Ivan在第j个小时的第i天有一节课(如果为0,则没有此类课)。
如果Ivan跳过不超过k堂课,请打印一周中Ivan必须在大学里度过的最少小时数。
示例:
输入: 2 5 1 01001 10110 输出: 5
输入: 2 5 0 01001 10110 输出: 8