zoukankan      html  css  js  c++  java
  • POJ1013Counterfeit Dollar

    这个题主要是判断硬币真假,可能轻可能重,称三次,要输出哪枚是假币,还要输出是重的还是轻的,所以最主要的是标记变量

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cmath>
     4 #include<iostream>
     5 using namespace std ;
     6 
     7 int main()
     8 {
     9     int n ;
    10     while(cin>>n )
    11     {
    12         int a['L'+3] ;
    13         for(int k = 1 ; k <= n ; k++)
    14         {
    15             memset(a,0,sizeof(a)) ;  //没被标记
    16             char ch[50],sh[50] ,ju[50];
    17             for(int j = 1 ; j <= 3 ; j++)
    18             {
    19                 cin>>ch>>sh>>ju;
    20                 if(strcmp(ju,"even")==0)
    21                 {
    22                     for(int i = 0 ; i <  strlen(ch) ; i++)
    23                     {
    24                         a[ch[i]] = 1000 ;//绝对真币为-1
    25                         a[sh[i]] = 1000 ;
    26                     }
    27                 }
    28                 else if(strcmp(ju,"up") == 0)
    29                 {
    30                     for(int i = 0 ; i < strlen(ch) ; i++)
    31                     {
    32                         if(a[ch[i]] != 1000)
    33                             a[ch[i]]++;//
    34                         if(a[sh[i]] != 1000)
    35                             a[sh[i]]-- ;
    36                     }
    37                 }
    38                 else if(strcmp(ju,"down") == 0)
    39                 {
    40                     for(int i = 0 ; i < strlen(ch) ; i++)
    41                     {
    42                         if(a[ch[i]] != 1000)
    43                             a[ch[i]] --;
    44                         if(a[sh[i]] != 1000)
    45                             a[sh[i]]++ ;
    46                     }
    47                 }
    48             }
    49             int max = 0 ;
    50             char count ;
    51             for(int j = 'A' ; j <= 'L' ; j++)
    52             {
    53                 if(a[j] == 1000)
    54                     continue ;
    55                 if( fabs(a[j]) >= max)
    56                 {
    57                     max = fabs(a[j]) ;
    58                     count = j ;
    59                 }
    60             }
    61             cout<<count<< " is the counterfeit coin and it is ";
    62             if(a[count] > 0)
    63                 cout<<"heavy."<<endl ;
    64             else
    65                 cout<< "light."<<endl ;
    66         }
    67     }
    68     return 0 ;
    69 }
    View Code
  • 相关阅读:
    算法图解——求Int整型数二进制中1的个数
    图解算法——句子逆序
    图解算法——反转字符串
    图解算法——整数倒置
    《图解算法》之狄克斯特拉算法
    图解算法——合并两个有序链表
    图解算法——括号匹配
    图解算法——两数之和
    #热烈庆祝我党成立100周年#
    jQuery全选反选
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3231284.html
Copyright © 2011-2022 走看看