| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2097 人关注过本帖
标题:关于字符串问题,请看一下3个点为什么只过了1个
只看楼主 加入收藏
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
结帖率:96.88%
收藏
已结贴  问题点数:6 回复次数:14 
关于字符串问题,请看一下3个点为什么只过了1个
程序代码:
#include<stdio.h>
#include<string.h>
void print(char s[],char ss[])
{  int n=0;
   int    l=strlen(s);
     for(int i=0,j=l-1;n<l;n++)
        {
            if(s[i]<s[j]) ss[n]=s[i++];
            else if(s[i]>s[j]) ss[n]=s[j--];
            else
            {     int k;

                for(k=1;s[i+k]==s[i-k];k++);
                if(s[i+k]<s[j-k]) ss[n]=s[i++];
                else ss[n]=s[j--];


}}}
int main()
{
    int n;
    scanf("%d",&n);
    for(int p=0;p<n;p++)
    {   int l;
        char a[600];
        char b[600];
        scanf("%d\n%s",&l,a);
        printf("case #%d:\n",p);
        print(a,b);
        printf("%s\n",b);

    }
    return 0;
}
搜索更多相关主题的帖子: for i++ int char 字符串 
2020-03-18 03:00
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
收藏
得分:0 
题目在https://acm.ecnu.
//虽然我也是抄了讨论区的代码但是只过了一个点不明白为什么

我想要两颗西柚。
2020-03-18 03:01
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
收藏
得分:0 
给定长度为 N 的字符串 S,要构造一个长度为 N 的字符串 T。起初,T 是一个空串,随后反复执行下列两个操作中的任意一个,最终 目标是构造字典序尽可能小的字符串 T。
操作一:从 S 的头部取一个字符,加到 T 的尾部。
操作二:从 S 的尾部取一个字符,加到 T 的尾部。
例如:输入 N=6,S=ACDBCB;构造的 T=ABCBCD
具体按下图进行操作。
图片附件: 游客没有浏览图片的权限,请 登录注册


输入格式
第 1 行:整数 T(1≤T≤10) 为问题数。
第 2 行:第一个 问题中的 N(1≤N≤500),表示字符串 S 的长度。
第 3 行:输入一个字符串 S,只包含大小写英文字母。
第 4 ~ 2*T+1 行:后面问题的数据 ,格式与第 1 个问题相同。
输出格式

对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等),然后 输出由 S 字符串构造出来的 字典序尽可能小的字符串 T。
样例
Input

3
2
ba
5
SORTS
10
Sarumanarm

Output

case #0:
ab
case #1:
SORST
case #2:
Samranamru


我想要两颗西柚。
2020-03-18 03:03
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏
得分:3 
图片附件: 游客没有浏览图片的权限,请 登录注册

#include <stdio.h>
int main()
{
    char *S="ACDBCB", T[501]={0};
    int i=0, j, k, n=0;
    for (j=0; S[j]; ++j);
    --j;
    printf("%s\n", S);
    while (i<=j)
    {
        printf("%*s\n", n,T);
        k = S[i]<S[j] ? i++ : j--;
        T[n++] = S[k];
    }
    T[n] = '\0';
    printf("%s\n", T);
    return 0;
}
2020-03-18 06:45
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
收藏
得分:0 
回复 4楼 吹水佬
好像没考虑到开头=末尾的情况qaq

我想要两颗西柚。
2020-03-18 13:04
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
字符串结尾的 0 呢?
你的b数组

https://zh.
2020-03-18 14:00
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
收藏
得分:0 
回复 6楼 lin5161678
请问是什么意思?有点没明白

我想要两颗西柚。
2020-03-18 14:42
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:3 
回复 7楼 komorebi0110
字符串是0结尾
你的0呢?

https://zh.
2020-03-18 14:46
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
收藏
得分:0 
程序代码:
#include<string.h>
void print(char s[],char ss[])
{  int n=0;
   int    l=strlen(s);
     for(int i=0,j=l-1;n<l;n++)
        {
            if(s[i]<s[j]) ss[n]=s[i++];
            else if(s[i]>s[j]) ss[n]=s[j--];
            else
            {     int k;

                for(k=1;s[i+k]==s[l-i-k-1];k++);
                if(s[i+k]<s[j-k]) ss[n]=s[i++];
                else ss[n]=s[j--];
}}



}
int main()
{
    int n;
    scanf("%d",&n);
    for(int p=0;p<n;p++)
    {   int l;
        char a[600];
        char b[600];
        scanf("%d\n%s",&l,a);
        printf("case #%d:\n",p);
        print(a,b);
      for(int count=0;count<strlen(a);count++)
        printf("%c",b[count]);
      printf("\n");

    }
    return 0;
}

//好像不是'\0'的问题耶,这样改过就对了,虽然不明白为什么直接输出b这个字符串后面会有乱码

我想要两颗西柚。
2020-03-18 15:23
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 9楼 komorebi0110
//好像不是'\0'的问题耶,这样改过就对了,虽然不明白为什么直接输出b这个字符串后面会有乱码
这就是根正苗红的缺少结尾0 导致的错误
字符串输出 会在查找到1字节的内容是0的时候停止输出
因为结尾的地方你没有正确的写0 所以会把结尾之后字节的内容输出
加上0 就可以了
循环输出也可以
固定字节 可以不用管0

https://zh.
2020-03-18 15:26
快速回复:关于字符串问题,请看一下3个点为什么只过了1个
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017630 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved