第2章练习题--10--密码--2818
2011-10-31 10:11
381 查看
#include <stdio.h> #include <stdlib.h> #include<string.h> int main(int argc, char *argv[]) { int n,k,plain[202],times[202],count,tmp; int i,j; char capher[202],plainText[202],temp[204]; //不加这个会出错 for(i=0;i<202;i++) { plainText[i]=32; } while(scanf("%d",&n)&&n!=0) { for(i=0;i<n;i++) scanf("%d",&plain[i]); //计算加密到原位置的次数 for(i=0;i<n;i++) { tmp=i; count=0; do { tmp = plain[tmp]-1; count++; }while(tmp!=i); times[i]=count; } while(scanf("%d",&k)&&k!=0) { getchar(); gets(capher); //将capher补充到n的长度 if(strlen(capher)<n) { for(i=strlen(capher);i<n;i++) capher[i]=32; capher[i]='\0'; } for(i=0;i<n;i++) { count = k%times[i]; tmp = i; while(count--) { tmp=plain[tmp]-1; } plainText[tmp]=capher[i]; } plainText ='\0'; printf("%s\n",plainText); } printf("\n"); } system("PAUSE"); return 0; }TLE错误:超时,要用简洁的算法,逐个字符考虑变换位置,总有回到原来位置的时候。还要注意的一个问题是变换次数要计算对。
相关文章推荐
- c 程序设计语言 第二版 练习题 4-10
- Wannafly挑战赛10 B 小H和密码【二维dp*好题】
- 第2章 Python基础-字符编码&数据类型 综合 练习题
- poj-2818-密码-C语言
- oracle 10 忘记密码
- 第2章第1节练习题3 共享栈的基本操作
- 语句练习题10
- js练习题:猜数1~10之间
- 第2章第3节练习题3 串的模式匹配(BM)
- java 开发实战经典 练习题 第12章 第7题 完成系统登录程序 从命令行输入用户名和密码
- suse 10配置SSH无密码登录
- Solaris 10密码限制
- Windows 10开启文件共享访问无需验证(输入用户名和密码)即可进入
- python学习——练习题(10)
- 第2章 10
- 蓝桥杯练习题(3)——16进制转10进制
- 6-10 编程练习题答案
- 数据结构与算法分析笔记与总结(java实现)--排序10:三色排序练习题
- Solaris 10忘记密码
- 【Redis笔记-10】Redis的设置数据库密码