WY44. 会话列表
描述
小云正在参与开发一个即时聊天工具,他负责其中的会话列表部分。
会话列表为显示为一个从上到下的多行控件,其中每一行表示一个会话,每一个会话都可以以一个唯一正整数id表示。
当用户在一个会话中发送或接收信息时,如果该会话已经在会话列表中,则会从原来的位置移到列表的最上方;如果没有在会话列表中,则在会话列表最上方插入该会话。
小云在现在要做的工作是测试,他会先把会话列表清空等待接收信息。当接收完大量来自不同会话的信息后,就输出当前的会话列表,以检查其中是否有bug。输入描述
输入的第一行为一个正整数T(T<=10),表示测试数据组数。输出描述
对于每一组数据,输出一行,按会话列表从上到下的顺序,输出会话id。示例1
输入:
3 5 1 2 3 4 5 6 1 100 1000 1000 100 1 7 1 6 3 3 1 8 1
输出:
5 4 3 2 1 1 100 1000 1 8 3 6
C 解法, 执行用时: 2ms, 内存消耗: 304KB, 提交时间: 2021-09-18
#include<stdio.h> int main() { int T; scanf("%d",&T); while(T--) { int N; int mp[200] = {0}; scanf("%d",&N); int cnt = 0; int flag = 0; for(int i = 0; i < N; i++) { int temp; scanf("%d",&temp); int mid = mp[0]; flag = 0; for(int j = 0; j < cnt; j++) { if(mid != temp) { int t = mid; mid = mp[j+1]; mp[j+1] = t; } else { flag = 1; break; } } if(flag == 0) { cnt++; } mp[0] = temp; } for(int i = 0; i < cnt - 1; i++) { printf("%d ",mp[i]); } printf("%d\r\n",mp[cnt-1]); } }
C 解法, 执行用时: 2ms, 内存消耗: 348KB, 提交时间: 2021-03-28
#include <stdio.h> #include <string.h> int main() { int id[203]; int ans[203]; int T,n; int i,j,k,ok; scanf("%d",&T); while (T--) { k=0; scanf("%d",&n); for (i=0; i<n; i++) { scanf("%d",&id[i]); } for (i=n-1; i>=0; i--) { ok=1; for (j=0;j<=k;j++) { if (ans[j] == id[i]){ ok=0; break;} } if (ok) { if (k == 0)printf("%d",id[i]); else printf(" %d",id[i]); ans[k++]=id[i];//printf("ans0=%d\n",ans[0]); } } printf("\n"); } return 0; }