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

UVA 156 - Ananagrams

編輯:C++入門知識

       首先進行單詞的大寫轉小寫,然後重排,所以得保存兩份單詞進行操作。當然,還要標記這個單詞重排後是否出現兩次,所以還需要一個flag作為標記。處理完成後,最後還需要按照原先單詞的字典順序輸出,所以還需要排一次序。   [cpp]   #include <stdio.h>   #include <stdlib.h>   #include <string.h>      struct _s {       char a[25];       char b[25];       bool flag;   }s[10000];      void trans(char st[]) {       int len = strlen(st);       // 大寫轉小寫       for (int i=0; i<len; i++)           if (st[i]>='A' && st[i]<='Z')               st[i] += ('a'-'A');       // 冒泡排序       for (int i=len; i>0; i--)           for (int j=0; j<i; j++) {               if (st[j] < st[j-1]) {                   char tmp = st[j];                   st[j] = st[j-1];                   st[j-1] = tmp;               }           }   }   // 根據b排序   int cmp_b(const void *_a, const void *_b) {       struct _s *a = (struct _s*)_a;       struct _s *b = (struct _s*)_b;       return strcmp(a->b, b->b);   }   // 根據a排序   int cmp_a(const void *_a, const void *_b) {       struct _s *a = (struct _s*)_a;       struct _s *b = (struct _s*)_b;       return strcmp(a->a, b->a);   }      int main() {       char st[25];       int n = 0;          while (scanf("%s", st)) {           if ('#' == st[0])               break;           strcpy(s[n].a, st);           trans(st);           strcpy(s[n].b, st);           n++;       }          qsort(s, n, sizeof (s[0]), cmp_b);          for (int i=1; i<n; i++)           if (0 == strcmp(s[i].b, s[i-1].b)) {               s[i].flag = 1;               s[i-1].flag = 1;           }          qsort(s, n, sizeof (s[0]), cmp_a);          for (int i=0; i<n; i++) {           if (!s[i].flag)               printf("%s\n", s[i].a);       }       return 0;   }    

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