当前位置:编程学习 > C/C++ >>

uva 10152 ShellSort 龟壳排序(希尔排序?)

今天状态总是很糟,这种题目卡了一天。。。

是不是休息时间太少了,头脑迟钝了。。。

名字叫希尔排序,我还以为跟它有关,还搜索了下资料。

只要找到trick就会发现是很水的题目。只要对比下就能找到哪些是移动过的龟壳,然后输出就行了。

代码:


 

#include <cstdio>  
#include <cstring>  
const int maxn = 1000; 
char pre[maxn][100], tar[maxn][100]; 
 
int main() { 
    int n; 
//  freopen("in", "r", stdin);  
    scanf("%d", &n); 
    while (n--) { 
        int m; 
        scanf("%d", &m); 
        gets(pre[0]); 
        for (int i = m - 1; i >= 0; i--) 
            gets(pre[i]); 
        for (int i = m - 1; i >= 0; i--) 
            gets(tar[i]); 
        int cnt = 0; 
        for (int i = 0, j = 0; i < m;) { 
            if (!strcmp(pre[i], tar[j])) 
                i++, j++; 
            else 
                i++, cnt++; 
        }//for  
        for (int i = m - cnt; i < m; i++) 
            printf("%s\n", tar[i]); 
        printf("\n"); 
    }//while  
    return 0; 
} 

#include <cstdio>
#include <cstring>
const int maxn = 1000;
char pre[maxn][100], tar[maxn][100];

int main() {
 int n;
// freopen("in", "r", stdin);
 scanf("%d", &n);
 while (n--) {
  int m;
  scanf("%d", &m);
  gets(pre[0]);
  for (int i = m - 1; i >= 0; i--)
   gets(pre[i]);
  for (int i = m - 1; i >= 0; i--)
   gets(tar[i]);
  int cnt = 0;
  for (int i = 0, j = 0; i < m;) {
   if (!strcmp(pre[i], tar[j]))
    i++, j++;
   else
    i++, cnt++;
  }//for
  for (int i = m - cnt; i < m; i++)
   printf("%s\n", tar[i]);
  printf("\n");
 }//while
 return 0;
}

 

 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,