NYOJ 1233 差值
2016-05-21 11:16
225 查看
差值
时间限制:3000 ms | 内存限制:65535 KB难度:3
描述
输入一个整数数组,将它们连接起来排成一个数,找出能排出的所有数字中最大,最小的两个,输出两个数的差值。例如输入数组{1,
2},则输出9。
输入第一行输入一个整数T,表示有T组测试数据。每组测试数据的第一行输入一个整数n(0<n<=1000),第二行输入n个整数ai(0<=ai<2^32)。输出输出最大数最小数的差值,输出占一行。
样例输入
1 3 1 2 3
样例输出
198
【分析】
输入n个数,将n个数进行字符串大小排序,输出n个数组成的最大值和最小值得差值,感觉不错的自定义排序函数来实现要求。
【代码】
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct str { char s[20]; } sub[1005]; /* 自定义排序,实现连接起来值最大的功能 */ bool cmp(str a,str b) { int i; int len1=strlen(a.s); int len2=strlen(b.s); int x=max(len1,len2); for(i=0; i<x; i++) // 按首数字大小进行排序 { if(a.s[i%len1]<b.s[i%len2]) return 1; else if(a.s[i%len1]>b.s[i%len2]) return 0; } return 1; } int main() { int t,len,i,j,n; char s[20050]; int a1[20050],a2[20050]; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0; i<n; i++) scanf("%s",sub[i].s); sort(sub,sub+n,cmp); // 调用自定义排序函数 /*for(i=0;i<n;i++) printf("%s ",sub[i].s); printf("\n");*/ memset(s,0,sizeof(s)); for(i=0; i<n; i++) strcat(s,sub[i].s); // 字符串函数连接两个字符串 len=strlen(s); for(j=0,i=0; i<len; i++) a1[j++]=s[i]-'0'; // 字符转换为整型 memset(s,0,sizeof(s)); for(i=n-1; i>=0; i--) strcat(s,sub[i].s); for(j=0,i=0; i<len; i++) a2[j++]=s[i]-'0'; for(i=len-1; i>=0; i--) { a2[i]=a2[i]-a1[i]; if(a2[i]<0) { a2[i]+=10; a2[i-1]-=1; } } for(i=0; i<len; i++) if(a2[i])break; if(i==len) printf("0"); for(; i<len; i++) printf("%d",a2[i]); printf("\n"); } return 0; }有问题记得留言啊
相关文章推荐
- Gulp入门之自动化构建Sass
- 关于Cocos2d-x有些头文件无法引入或者类显示无法打开
- linux下man命令的使用
- spring-mybatis整合测试
- listView系列之分类显示
- 【VC图像处理】双线性插值
- 一个简单的图片裁剪Activity:android-crop
- 一种完美的降采样插值方法
- 使用JQuery实现级联Dropdownbox
- 网站受攻击的常用手段
- sql server中syscolumns各个字段的意义
- 互联网上常用的协议以及它们的工作端口
- 服务器发布tomcat的WEB项目供外网访问
- 初学android studio 快捷键个人实践总结
- Threadloca共享线程局部变量和线程同步机制的区别(转载)
- mysql乱码解决
- 接口测试总结
- PHP相关
- JavaScript DOM中 改变样式属性,实现动画效果
- JavaScript DOM中 改变样式属性,实现动画效果