1. 程式人生 > >Hdu 2072 單詞數【字串】

Hdu 2072 單詞數【字串】

單詞數

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 36237    Accepted Submission(s): 8764

Problem Description

lily的好朋友xiaoou333最近很空,他想了一件沒有什麼意義的事情,就是統計一篇文章裡不同單詞的總數。下面你的任務是幫助xiaoou333解決這個問題。

Input

有多組資料,每組一行,每組就是一篇小文章。每篇小文章都是由小寫字母和空格組成,沒有標點符號,遇到#時表示輸入結束。

Output

每組只輸出一個整數,其單獨成行,該整數代表一篇文章裡不同單詞的總數。

Sample Input

you are my friend
#

Sample Output

4

方法比較笨:

用迴圈判斷,把每個單詞都從字串裡分離出來,存到一個字元數組裡面,然後排序,然後統計求得不同的單詞數。

這樣做比較坑的一個地方是,如果全部是空格,單詞數是0,不是1,所以需要特殊判斷一下,這個題這樣做,的確有點複雜...

#include<stdio.h>
#include<string.h>
void swep(char a[],char b[])
{
	char c[1005];
	strcpy(c,a);strcpy(a,b);strcpy(b,c);
}
int main()
{
	char x[1005],y[1005][1005];int i,j,c,len,n;
	while(gets(x))
	{
		len=strlen(x);
		if(strcmp(x,"#")==0)
		{
			break;
		}
		j=n=c=0;
		memset(y,0,sizeof(y));
		for(i=0;i<len;i=i+j+1)
		{
			j=0;
			if(i+j<len&&x[i+j]!=' ')
			{
				for(j=0;x[i+j]!=' '&&i+j<len;++j)
				{
					y[n][j]=x[i+j];
				}
				++n;
			}	
		}
		for(i=0;i<n;++i)
		{
			for(j=0;j<n;++j)
			{
				if(strcmp(y[i],y[j])>0)
				{
					swep(y[i],y[j]);
				}
			}
		}
		for(i=1;i<n;++i)
		{
			if(strcmp(y[i-1],y[i])!=0)
			{
				++c;
			}
		}
		if(n==0)
		{
			c=0;
		}
		else
		{
			++c;
		}
		printf("%d\n",c);
	}
	return 0;
}

有一種直接呼叫庫函式的方法,把所有的單詞裂解出來,然後實現統計.......

#include<stdio.h>
#include<string.h>
int main()
{
    int i,j,t,sum,k,b[100];
    char *v[1005],s[1005];//開了一個指標陣列,相當於一個二維陣列
    while(gets(s))
    {
        memset(b,1,sizeof(b));
        if(s[0]=='#')
        {
            break;
        }
        i=0;v[i]=strtok(s," ");//這個函式返回的是指標,所以開的是指標陣列
        while(v[i])
        {
            i++;
            v[i]=strtok(NULL," ");
        }
        for(j=0;j<i-1;j++)//迴圈除去相同的
        {
            for(t=j+1;t<i;t++)
            {
                if(strcmp(v[j],v[t])==0)
                {
                    b[t]=0;
                }
            }
        }
        for(sum=0,k=0;k<i;k++)//統計個數....
        {
            if(b[k])
            {
                sum++;
            }
        }  
        printf("%d\n",sum);
    }
    return 0;
}

好幾個月了,再次做這道題,結果還是被坑了好幾次,最後還是用保險的方法去統計的.....

本來以為自己還會點東西,結果發現,原來真的只會一點.....

把大神給的測試資料貢獻一下.....

  asdf as a

asdf   asdf    
#
(相信你的眼睛,那有一行空格.....)

/*
2015年1月15日13:39  
*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{
	char s[1005];
	bool friend operator < (node a,node b)
	{
		return strcmp(a.s,b.s)>0;
	}
}x[1005];
int main()
{
	char s[1005];
	//freopen("shuju.txt","r",stdin);
	while(gets(s),s[0]!='#')
	{
		memset(x,0,sizeof(x));
		int cnt=0,tp=0,len=strlen(s);
		for(int i=0;i<len;++i)
		{
			if(s[i]==' ')
			{
				continue;
			}
			while(i<len&&s[i]!=' ')
			{
				x[cnt].s[tp++]=s[i++];
			}
			++cnt;tp=0;
		}
		sort(x,x+cnt);
		int ans=0;
		for(int i=0;i<cnt;++i)
		{
			if(!i||strcmp(x[i-1].s,x[i].s)!=0)
			{
				++ans;
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}


相關推薦

Hdu 2072 單詞字串

單詞數 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 36237    Accepted Submiss

HDU - 2072 單詞字串讀入技巧,sstream大法,水題,字串讀入格式)

題幹: lily的好朋友xiaoou333最近很空,他想了一件沒有什麼意義的事情,就是統計一篇文章裡不同單詞的總數。下面你的任務是幫助xiaoou333解決這個問題。 Input 有多組資料,每組一行,每組就是一篇小文章。每篇小文章都是由小寫字母和空格組成,沒有標點符號,遇到#時表示

leetcode 557. 反轉字串中的單詞 IIIEasy

題目: 給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。 示例 1: 輸入: “Let’s take LeetCode contest” 輸出: “s’teL ekat edoCteeL tsetnoc” 注意:在字串中,每個單詞由單個空格分隔,並且

(第二題)統計單詞 洛谷P1308

題目描述 一般的文字編輯器都有查詢單詞的功能,該功能可以快速定位特定單詞在文章中的位置,有的還能統計出特定單詞在文章中出現的次數。 現在,請你程式設計實現這一功能,具體要求是:給定一個單詞,請你輸出它在給定的文章中出現的次數和第一次出現的位置。注意:匹配單詞時,

HDU 2040--親和水題

親和數 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi

java-mybaits-00203-DAO-mapper代理開發方法,多參推薦

tca alt 三種 ram 程序員 spl cep () void 程序員只需要mapper接口(相當 於dao接口) 不需要寫具體實現類,mapper已經代理完成,mybatis才有的 一、mapper代理開發方法(建議使用) 程序員在編寫map

什麽是矩陣的範轉載

log 一次函數 絕對值 半徑 領域 理解 思維 tro 函數 在介紹主題之前,先來談一個非常重要的數學思維方法:幾何方法。在大學之前,我們學習過一次函數、二次函數、三角函數、指數函數、對數函數等,方程則是求函數的零點;到了大學,我們學微積分、復變函數、實變函數、泛函等。我

Halcon函

多個 ger name 像素 兩個 lin spl poi bsp comment ( : : Comment : ) 註釋語句 exit ( : : : ) 退出函數 open_file ( : : FileName, FileType : FileHandle

HDU 1711 Number Sequencekmp

show turn case put next() void 出現 回首 img Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M] (1

php編譯參註解--不明白許多參的作用 慎用 –with-curlwrappers參轉載

大小 debug ttext s參數 without freetype sql安裝 exif ati 在Linux下安裝PHP,源代碼方式安裝,總需要配置很多參數。這裏列出常用配置參數,並詳細用中文解釋說明了。給大家一些參考 編譯PHP的時候慎用 –with-curlwra

命令行參解析函getopt和getopt_long函

問題 數組 輸出流 include req pts 容易 -- 得到 原文地址:http://blog.csdn.net/cashey1991/article/details/7942809 getopt和getopt_long函數 平時在寫程序時常常需要對命令行參

rsync的命令參

word let orm 不同 文件名 pda rom add etc 本篇文章,我們只介紹rsync的命令參數。 rsync參數的具體解釋如下: -v, –verbose 詳細模式輸出 -q, –quiet 精簡輸出模式 -c, –checksum 打開校驗開關,強制對文

基礎循環 模擬

int under 每一個 宋體 can port toc log flag 1096: 【基礎】循環數【模擬】 時間限制: 1 Sec 內存限制: 128 MB提交: 426 解決: 283[提交][狀態][討論版] 題目描述 描述 n 位的一個整數是循環數(cyc

計算細胞BFS

bsp lin esp 給定 sin int splay play 表示 問題描述 一矩形陣列由數字0到9組成,數字1到9代表細胞,細胞的定義為沿細胞數字上下左右還是細胞數字則為同一細胞,求給定矩形陣列的細胞個數。 輸入格式 2行:第1行為兩個整數 mm, nn, 代表矩陣

2208. [JSOI2010]連通Tarjan

src jsoi2010 else tps iostream jpg data ring 計算 Description Input 輸入數據第一行是圖頂點的數量,一個正整數N。 接下來N行,每行N個字符。第i行第j列的1表示頂點i到j有邊,0則表示無邊。

HDU 1495 非常可樂BFS

esp style 模擬操作 pop ace nbsp urn 而且 ane 題目鏈接:https://vjudge.net/problem/HDU-1495 轉載於:https://www.cnblogs.com/ECJTUACM-873284962/p/6750320.

HDU 2102 A計劃 BFS

node 二層 output bool pan set spa 右移 als <題目鏈接> 題目大意: 可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命的考驗。魔王已經發出消息說將在T時刻吃掉公主,因為他聽信謠言說吃公主的肉也能

仿String()構造器函 總結

join() 簡單判斷 技術 數字 字符串分割 相加 ova 應該 結果 需求 實現以下方法: 控制臺結果: 需求分析: 首先確定new調用的this和什麽對象綁定,如果跟默認返回的對象綁定肯定做不到 [ ] 這樣的訪問,所以要在構造器內部返回一個包裝過

MySQL log_slave_updates 參

style fec replicat border 博客園 col date 詳細 從服務器 說明:最近部署了mysql的集群環境,詳細如下M01和M02為主主復制,M01和R01為主從復制;在測試的過程中發現了以下問題: 1、M01和M02的主主復制是沒有問題的(從M

CH1807 NecklaceHash字串最小表示法

1807 Necklace 0x18「基本資料結構」練習 背景 有一天,袁☆同學綿了一條價值連城寶石項鍊,但是,一個嚴重的問題是,他竟然忘記了項鍊的主人是誰!在得知此事後,很多人向☆同學發來了很多郵件,都說項鍊是自己的,要求他歸還(顯然其中最多隻有一個人說了真話)。 ☆同學要求每個人都寫了一段關