PAT 1008. 数组元素循环右移问题 (20)
2016-05-02 12:53
453 查看
投机取巧版get……
然而我要换种方法解决这道题,不过下面这种算法弊端很明显就是如果输入的数非常非常非常大,move和give的数组长度需要定义的很大很大很大,有点事复杂度仅为n;一开始没看到题目条件写的这个算法,接下来要换种算法了……
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/knock.gif)
加油!(以下代码仅供观看……= =)
#include<stdio.h>
#include<string.h>
int main()
{
int n,m,nod,i,s=0,t=0,q,M;
char move[10000]={0},give[10000]={0},str[20]={0};
scanf("%d",&n);
scanf("%d",&m);
q=m%n;
for(i=0;i<n;i++)
{
scanf("%d",&nod);
sprintf(str,"%ld",nod);
M=strlen(str);
if(i>=(n-m)&&(n-m)>=0)
{
sprintf(&move[s],"%*d",M,nod);
if(m==n&&i==(n-1))continue;
sprintf(&move[s+M]," ");
s=s+1+M;
}
else if(i<(n-m)&&(n-m)>=0)
{
sprintf(&give[t],"%*d",M,nod);
if(i==(n-m-1))continue;
sprintf(&give[t+M]," ");
t=t+1+M;
}
if((n-m)<0&&i>=(n-q))
{
sprintf(&move[s],"%*d",M,nod);
if(q==0&&i==(n-1))continue;
sprintf(&move[s+M]," ");
s=s+1+M;
}
else if((n-m)<0&&i<(n-q))
{
sprintf(&give[t],"%*d",M,nod);
if(i==(n-q-1))continue;
sprintf(&give[t+M]," ");
t=t+1+M;
}
}
printf("%s",move);
printf("%s",give);
}
然而我要换种方法解决这道题,不过下面这种算法弊端很明显就是如果输入的数非常非常非常大,move和give的数组长度需要定义的很大很大很大,有点事复杂度仅为n;一开始没看到题目条件写的这个算法,接下来要换种算法了……
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/knock.gif)
加油!(以下代码仅供观看……= =)
#include<stdio.h>
#include<string.h>
int main()
{
int n,m,nod,i,s=0,t=0,q,M;
char move[10000]={0},give[10000]={0},str[20]={0};
scanf("%d",&n);
scanf("%d",&m);
q=m%n;
for(i=0;i<n;i++)
{
scanf("%d",&nod);
sprintf(str,"%ld",nod);
M=strlen(str);
if(i>=(n-m)&&(n-m)>=0)
{
sprintf(&move[s],"%*d",M,nod);
if(m==n&&i==(n-1))continue;
sprintf(&move[s+M]," ");
s=s+1+M;
}
else if(i<(n-m)&&(n-m)>=0)
{
sprintf(&give[t],"%*d",M,nod);
if(i==(n-m-1))continue;
sprintf(&give[t+M]," ");
t=t+1+M;
}
if((n-m)<0&&i>=(n-q))
{
sprintf(&move[s],"%*d",M,nod);
if(q==0&&i==(n-1))continue;
sprintf(&move[s+M]," ");
s=s+1+M;
}
else if((n-m)<0&&i<(n-q))
{
sprintf(&give[t],"%*d",M,nod);
if(i==(n-q-1))continue;
sprintf(&give[t+M]," ");
t=t+1+M;
}
}
printf("%s",move);
printf("%s",give);
}
相关文章推荐
- zoj 3866 Cylinder Candy
- Codeforces Round #349 (Div. 2) D. World Tour 暴力最短路
- Startbbs YouBBS等轻论坛程序折腾过程
- Bloom Filter - Math deduce
- 1. Two Sum
- POJ3259-JAVA语言描述-Bellman_Ford算法
- Redis初认识——竹子整理
- 第2课:SparkStreaming 三板斧之二:解密SparkStreaming
- Spring.Net初认识——竹子整理
- IMF SPARK 源代码发行定制班 预习课程 Spark框架源码的调试 (2) 从master worker main入口进行调试
- bzoj 2440: [中山市选2011]完全平方数
- HDU-1078 FatMouse and Cheese ( 记忆化搜索 )
- hdu2859 Phalanx
- 自动加载下一页
- redis codis 安装部署
- adapter总结
- JasperReport的动态报表
- 异步编程,采用WorkgroupWorker,async和await关键字
- 帧、数据报、数据包的区别和联系
- iOS开发 ☞ 推送通知(Push Notification)