程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 2072

hdu 2072

編輯:C++入門知識

這道題用java來做是很快的,可是不知道今天為什麼,用java來做就是ac不了,所以就改用c、c++來做了

解題思路:這一道題其實主要的問題就是解決空格問題以及單詞的重復問題。用stringstream來解決空格問題,

用set來解決殘次的重復問題,這道題也就迎刃而解了。以下附上c和c++的ac代碼.(我的另一片文章中有從網上轉載的大神的streamstring的一些資料)

c++(使用STL來做)

 

 

[cpp] 
/*
 * 2072_2.cpp
 *
 *  Created on: 2013年8月7日
 *      Author: Administrator
 *      總有一天我會追到章澤天的。。。。
 */ 
 
 
 
#include <iostream>  
#include <string>  
#include <set>  
#include<sstream>  
 
using namespace std; 
 
set<string> words; 
 
int main(){ 
    string row,input; 
 
    //getline(cin,row) 用row來保存一行的內容  
    while(getline(cin,row)&&row!="#"){ 
 
        words.clear(); 
 
        //定義一個stringstream類型的對象  
        stringstream str(row); 
 
        //str >> input 給input賦值  
        while(str >> input){ 
            words.insert(input); 
        } 
 
 
        cout<<words.size()<<endl; 
    } 
 
    return 0; 

/*
 * 2072_2.cpp
 *
 *  Created on: 2013年8月7日
 *      Author: Administrator
 *      總有一天我會追到章澤天的。。。。
 */

 

#include <iostream>
#include <string>
#include <set>
#include<sstream>

using namespace std;

set<string> words;

int main(){
 string row,input;

 //getline(cin,row) 用row來保存一行的內容
 while(getline(cin,row)&&row!="#"){

  words.clear();

  //定義一個stringstream類型的對象
  stringstream str(row);

  //str >> input 給input賦值
  while(str >> input){
   words.insert(input);
  }


  cout<<words.size()<<endl;
 }

 return 0;
}

 


c版本(小敬大神奉獻的)


[plain]
#include<cstdio> 
#include<cstring> 
 
char ch[110000], a[1100][110], temp[110]; 
 
int main() 

    while (1) { 
        gets(ch); 
        if (strcmp(ch, "#") == 0) break; 
        int num = 0, len = strlen(ch); 
        int start = 0, end; 
        while (1) { 
            while (start < len && ch[start] == ' ') ++start; 
            end = start + 1; 
            while (end < len && ch[end] != ' ') ++end; 
            if (start < len) { 
                int has = 0; 
                int i; 
                for (i=start; i<end; ++i) temp[i-start] = ch[i]; 
                temp[i-start] == '\0'; 
                for (int j=0; j<num; ++j) { 
                    if (strcmp(a[j], temp) == 0) { 
                        has = 1; 
                        break; 
                    } 
                } 
                if (!has) { 
                    strcpy(a[num], temp); 
                    ++num; 
                } 
                for (int j=0; j<110; ++j) temp[j] = '\0'; 
            } 
            else break; 
            start = end + 1; 
        } 
        printf("%d\n", num); 
    } 
    return 0; 

#include<cstdio>
#include<cstring>

char ch[110000], a[1100][110], temp[110];

int main()
{
    while (1) {
        gets(ch);
        if (strcmp(ch, "#") == 0) break;
        int num = 0, len = strlen(ch);
        int start = 0, end;
        while (1) {
            while (start < len && ch[start] == ' ') ++start;
            end = start + 1;
            while (end < len && ch[end] != ' ') ++end;
            if (start < len) {
                int has = 0;
                int i;
                for (i=start; i<end; ++i) temp[i-start] = ch[i];
                temp[i-start] == '\0';
                for (int j=0; j<num; ++j) {
                    if (strcmp(a[j], temp) == 0) {
                        has = 1;
                        break;
                    }
                }
                if (!has) {
                    strcpy(a[num], temp);
                    ++num;
                }
                for (int j=0; j<110; ++j) temp[j] = '\0';
            }
            else break;
            start = end + 1;
        }
        printf("%d\n", num);
    }
    return 0;
}

 

以下貼一下沒有ac的java的代碼:


[java] 
package com.njupt.acm; 
 
import java.util.HashMap; 
import java.util.Map; 
import java.util.Scanner; 
 
public class HDU_2072 { 
 
    public static void main(String[] args) { 
        Scanner scanner = new Scanner(System.in); 
         
        String str ; 
        Map map; 
        while(true){ 
             
            str = scanner.nextLine(); 
            str =  str.trim().replaceAll("\\s{1,}", " "); 
             
            if(str.startsWith("#")){ 
                break; 
            } 
            String[] strs = str.split(" "); 
            map = new HashMap(); 
            for(int i = 0 ; i < strs.length ; ++i){ 
                map.put(strs[i], 0); 
            } 
             
            System.out.println(map.keySet().size()); 
        } 
         
         
         
    } 

package com.njupt.acm;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class HDU_2072 {

 public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  
  String str ;
  Map map;
  while(true){
   
   str = scanner.nextLine();
   str =  str.trim().replaceAll("\\s{1,}", " ");
   
   if(str.startsWith("#")){
    break;
   }
   String[] strs = str.split(" ");
   map = new HashMap();
   for(int i = 0 ; i < strs.length ; ++i){
    map.put(strs[i], 0);
   }
   
   System.out.println(map.keySet().size());
  }
  
  
  
 }
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved