hdu 3747 Download

简介: 点击打开链接 题目意思:  有一个人现在想要下载一些东西,现在呢给定一个字符串T表示所以东西的原始状态,1表示打勾,0表示空,现在给定一个字符串S是这个人所要下载的东西的情况,问我么这个最少需要点击几次,这里上面有三个地方第几需要计算 1 全选 2 反选  3 下载东西对应框  解题思路:      我们先来说明一下规律                        1: 全选大于等于两次都是和全选一次相同   2:反选一次状态相反,全选两次回到原来效果。

点击打开链接


题目意思:  有一个人现在想要下载一些东西,现在呢给定一个字符串T表示所以东西的原始状态,1表示打勾,0表示空,现在给定一个字符串S是这个人所要下载的东西的情况,问我么这个最少需要点击几次,这里上面有三个地方第几需要计算 1 全选 2 反选  3 下载东西对应框 


解题思路:      我们先来说明一下规律
                       1: 全选大于等于两次都是和全选一次相同   2:反选一次状态相反,全选两次回到原来效果。(反选奇数次状态相反,反选偶数次不变)  
通过上面的规律那么我么知道我么要想最小点击次数,每一种可能的选择都是只点一次即可。

                       所以就有一下几种点击情况
                       1:不全选也不反选单个选  2:先全选再单个选  3:先反选在单个选    4先全选再反选再单个选  5 先反选再全选再单个选(其实这个是不用考虑的效果和直接全选一样),所以只要去一一求出取最小值即可


代码:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <cstdio>
#include <stack>
#include <queue>
#include <cmath>
using namespace std;

int n , ans;
char T[55] , S[55];

void solve(){
    ans = 999999999;
    //1直接单个选
    int num = 0;
    for(int i = 0 ; i < n ; i++){
        if(T[i] != S[i]) num++;
    }
    if(ans > num) ans = num;
    //2全选+单个选
    num = 1;
    for(int i = 0 ; i < n ; i++){
        if(S[i] == '0') num++;
    }
    if(ans > num) ans = num;
    //3反选+单个选
    num = 1;
    for(int i = 0 ; i < n ; i++){
        if(T[i] == '0') T[i] = '1';
        else T[i] = '0';
    }
    for(int i = 0 ; i < n ; i++){
        if(T[i] != S[i]) num++;
    }
    if(ans > num) ans = num;
    //4先全选在反选
    num = 2;
    for(int i = 0 ; i < n ; i++) T[i] = '0';
    for(int i = 0 ; i < n ; i++){
        if(T[i] != S[i]) num++;
    }
    if(ans > num) ans = num;
    printf("%d\n" , ans);
}

//主函数
int main(){
    //freopen("input.txt" , "r" , stdin);
    while(scanf("%d" , &n) != EOF){
        getchar();//注意换行
        gets(T) ; gets(S);
        solve();
    }
    return 0;
}



目录
相关文章
|
4月前
|
算法 C++
POJ 3740 Easy Finding题解
这篇文章提供了一个使用舞蹈链(Dancing Links)算法解决POJ 3740 "Easy Finding" 问题的C++代码实现,该问题要求找出矩阵中能够使每一列都恰好包含一个1的行集合。
|
7月前
|
人工智能
HDU-1159-Common Subsequence
HDU-1159-Common Subsequence
37 0
|
7月前
Strange fuction(HDU--2899)
Strange fuction(HDU--2899)
UVa11076 - Add Again
UVa11076 - Add Again
55 0
|
人工智能 BI
UVa1554 - Binary Search
UVa1554 - Binary Search
49 0
UVa343 What Base Is This
UVa343 What Base Is This
49 0
Leetcode-Easy 72. Edit Distance
Leetcode-Easy 72. Edit Distance
88 0
Leetcode-Easy 72. Edit Distance
Leetcode-Easy 832. Flipping an Image
Leetcode-Easy 832. Flipping an Image
91 0
UVA 12493 Stars
给一个圆,用N个点将圆平均分成N个部分,以某点为起点,连结接下去的第k个点,直到回到原点,求能画出多少个complete stars ,complete stars:通过上述方法,最终每个点都连接到的图,称为complete stars 。
|
Java 文件存储
HDOJ(HDU) 2132 An easy problem
HDOJ(HDU) 2132 An easy problem
109 0