字符串展开,老是WA,求解救~~

作者&投稿:慕光 (若有异议请与网页底部的电邮联系)
ACM水题老是WA,求解救~

# include
# include
# include
#include
using namespace std;
int a[100000];

void quicksort(int i,int j)
{
int low=i,hight=j;
int key=a[i];
while(i<j)
{
while(i=key)
j--;
if(i<j)
a[i++] = a[j];
while(i<j && a[i]<=key)
i++;
if(i<j)
a[j--] = a[i];
}
a[i] = key;
if(low<hight)
{
quicksort(low,i-1);
quicksort(i+1,hight);
}
}
bool judge(int n)
{
if(n==1)return 0;
if(n==2)return 1;//1,2特殊
int k = (int)sqrt((double)n),i;
for(i=2;i<=k+1;i++)//不是k ,比如6你就错了,根6=2.多
if(n%i == 0)
return 0;
return 1;
}

int main()
{
int n,b[10],num,max,p,i,j,k;
while(scanf("%d",&n),n)
{
num = 0;
max=-1 ;//可能一个也没有,最小值设为负数
for(i=1;i<=n;i++)scanf("%d",&a[i]);
quicksort(1,n);
// for(i=1;i<=n;i++)cout<<a[i]<<endl;
for(i=1;i<=n;i++)
{
memset(b,0,sizeof(b));
num = 0;
k = a[i]<0?(-a[i]):a[i];//负数变为正数
// cout<<k<<endl;
while(k)
{
if(judge(k%10))b[k%10]++;
k/=10;
}
for(j=0;j<10;j++)
if(b[j]!=0)
num++;
if(num>max)
{
max = num;
p = a[i];
}
}
printf("%d
",p);
}
// system("pause");
return 0;
}
今天头有点晕

两个明显的错误,一,const int max_size=10; 这里10太小了,应该改大些;
二、你的算法处理不了全部是负数的数据,比如3 -3 -2 -1。
不帮你改代码了,自己去修改吧~

你这个程序无大错,特别是判断逻辑,虽然很累赘但都是正确的。
增加了些输入提示,原来没有提示,输入数据多且有范围要求,所以容易错。第一个while()没有必要且原来的写法意义不明确,删除了。有改动的请看注释。
逻辑判断要研究关系,安排好前后顺序,可以用较少的判断达到同样的目的(未改)。
建议不这样写程序,定义功能函数可以使你的代码简洁得多。供参考……
#include "stdio.h"//
#include "string.h"//
#include "stdlib.h"//
void main(void){
int t,p1,p2,p3,i,ii,jj,l;//n,,j
char c[101];
char d[3000];

printf("要处理几组数据? n-t=");
//while(scanf("%d",&t)!=EOF){//意义不明确
scanf("%d",&t);
while(t--){
l = 0;
memset(d,0,sizeof(d));
memset(c,0,sizeof(c));
printf("选择处理格式:\np1(1~3)=? p1(1~3)=? p1(1~3)=?(用间隔隔开)\n");
scanf("%d%d%d",&p1,&p2,&p3);
getchar();
gets(c);
for(i=0;c[i]!='\0';i++){
if(c[i] == '-'){
if((c[i+1]>c[i-1]&&(c[i-1]>='0'&&c[i-1]<='9')&&(c[i+1]>='0'&&c[i+1]<='9'))
||(c[i+1]>c[i-1]&&(c[i-1]>='a'&&c[i-1]<='z')&&(c[i+1]>='a'&&c[i+1]<='z'))){//后面的字符大于前面的并且同为小写字母或数字
if(p1 == 1){
if(p3 == 2)
for(ii=c[i+1]-1;ii>=c[i-1]+1;ii--)
for(jj=1;jj<=p2;jj++) d[l++] = ii;
else if(p3 == 1)
for(ii=c[i-1]+1;ii<=c[i+1]-1;ii++)
for(jj=1;jj<=p2;jj++) d[l++] = ii;
}
else if(p1 == 2){
if(p3 == 2&& !(c[i-1]>='0'&&c[i-1]<='9')&&!(c[i+1]>='0'&&c[i+1]<='9'))
for(ii=c[i+1]-1;ii>=c[i-1]+1;ii--)
for(jj=1;jj<=p2;jj++) d[l++] = ii-32;
else if(p3 == 2&&(c[i-1]>='0'&&c[i-1]<='9')&&(c[i+1]>='0'&&c[i+1]<='9'))
for(ii=c[i+1]-1;ii>=c[i-1]+1;ii--)
for(jj=1;jj<=p2;jj++) d[l++] = ii;
else if(p3 == 1&& !(c[i-1]>='0'&&c[i-1]<='9')&&!(c[i+1]>='0'&&c[i+1]<='9'))
for(ii=c[i-1]+1;ii<=c[i+1]-1;ii++)
for(jj=1;jj<=p2;jj++) d[l++] = ii-32;
else if(p3 == 1&&(c[i-1]>='0'&&c[i-1]<='9')&&(c[i+1]>='0'&&c[i+1]<='9'))
for(ii=c[i-1]+1;ii<=c[i+1]-1;ii++)
for(jj=1;jj<=p2;jj++) d[l++] = ii;
}
else if(p1 == 3){
if(p3 == 2)
for(ii=c[i+1]-1;ii>=c[i-1]+1;ii--)
for(jj=1;jj<=p2;jj++) d[l++] = '*';
else if(p3 == 1)
for(ii=c[i-1]+1;ii<=c[i+1]-1;ii++)
for(jj=1;jj<=p2;jj++) d[l++] = '*';
}
}
//else d[l++] = c[i];这两行可用i++替换
//continue;
i++;
}
d[l++] = c[i];
}
d[l] = '\0';
puts(d);
}
//}这是与第一个while配对的
}

好猛...何必整个程序就一个main从头写到尾呢...
函数调用的开销一般来说并不高.

这么长,你开玩笑呢


字符串展开,老是WA,求解救~~
你这个程序无大错,特别是判断逻辑,虽然很累赘但都是正确的。增加了些输入提示,原来没有提示,输入数据多且有范围要求,所以容易错。第一个while()没有必要且原来的写法意义不明确,删除了。有改动的请看注释。逻辑判断要研究关系,安排好前后顺序,可以用较少的判断达到同样的目的(未改)。建议不这...

wa字符串怎么关闭
切换至英文输入法或者开启大写锁定。根据查询资料显示下个黑盒工坊,把WA插件安装了,然后百度下,自动跟随的字符串,输入下就好了。

这道ACM为什么我是WA。
你这个方法只是局部的两个是最大字典序,当全部都这样排好后不一定是最大序。用这样的方法是错的。如果是我,会用一个直接的深度优先搜索,然后中间要进行剪枝(不然会TEL的)。如果例:3 cc cca b 这里的正确答案是:ccccab 而你的答案是:ccaccb ...

wa字符串是什么意思
"wa"字符串是英语中"with"的简写形式,意思是"与"、"和"或"带有"。它在消息传递、通讯技术和社交媒体中常被使用。例如,在某些聊天软件中,"wa"可以表示与某人一起参加活动或分享某个信息,类似于"with"的含义。在一些社交媒体平台中,用户可以使用"wa"标签或表情来表示与他人的合作或共同行动。

wlk复仇提示wa
首先复制字符串。副本中能检测到自己是否成为怪物的仇恨目标使用:首先复制字符串。回到游戏中,在聊天框输入\/wa打开控制台,选择导入。将刚才复制的字符串粘贴至此,点击导入群组。导入完成后记得\/RL一下,重载界面以释放控制台内存,否则你的内存占用会爆高。WLK是巫妖王之怒WrathoftheLichKing的简称,...

魔兽世界2021插件wa字符串教程 魔兽世界2021插件wa字符串的教程
1、聊天窗口输入“\/wa”,新建-“组”-输入名称并回车,再次左键点击该“组”-“从模板”,选择任意大小“图标”,“增益效果”-选择“咒术洪流”,“仅在获得增益效果时显示”,设置好名称并回车-拖动预览图标到任意位置,搞定。2、虽然该Buff效果被放大并监视,但是没有达到前面说的“为后续技能做...

wa插件怎么导入字符串
在WA插件中导入字符串的具体步骤如下:1. 打开WA插件编辑器。2. 在相应的位置创建或编辑需要导入字符串的部分。3. 在编辑器中直接输入字符串,或通过代码引入外部字符串资源。4. 保存并测试插件,确保字符串成功导入。详细解释:WA插件是一种广泛应用于不同领域的开发工具。在WA插件中导入字符串...

输入wa字符串未知的解压方法
wa的字符串是weakauras2的配置文件。然后在游戏中的聊天栏里输入命令:\/WA来调出WA的设置页面。在WA页面的右下角有一个导入字符串的功能,点开该选项,把你之前复制的字符串复制到里面,导入即可。

wa怎么显示层数
wa显示层数如下:1、回到游戏中,在聊天框输入\/wa打开控制台,选择导入。2、将刚才复制的字符串粘贴至此,点击导入群组。3、导入完成后记得RL一下,重载界面以释放控制台内存,否则你的内存占用会爆高。WA在信息学竞赛及其训练中是WrongAnswer的缩写,即答案错误,表示你提交的程序评测中得到的结果与标准...

wa多目标在哪里设置
wlk猎人wa设置需设置字符串。步骤为:复制字符串,回到游戏中,在聊天框输入\/wa打开控制台,选择导入。【添加目标】在命令\/target后输入“空格和名字”,然后点击“保存”,如图所示。【使用宏命令】把跟随宏拖动到动作条,然后站在你刚才输入名字的那个玩家附近,再点击跟随宏,即可跟随那个玩家。具体如...

印台区18088572323: 杭电oj 1002题,我vc好几次都对,老是WA,求指导!代码如下: -
彭采辛可: 应该是你的输入格式不对,题目要求的输入格式如下:Sample Input21 2112233445566778899 998877665544332211 Sample Output Case 1:1 + 2 = 3 Case 2:112233445566778899 + 998877665544332211 = 1111111111111111110//这里是把所有要算的数一次性输入进去,之后再一次性把结果输出去,你的却是输入一组数据就输出一个结果

印台区18088572323: 杭电ACM1423最长公共子串总是WA -
彭采辛可: 不是要求最长公共递增子串?#include #include #include #define max(a, b) ((a) > (b) ? (a) : (b)) int main() { int T, i, j, k; int len[2]; int num[2][502]; int dp[502]; scanf("%d", &T); while (T--) { for (i = 0; iscanf("%d", len + i); for (j = 1; jscanf("%d",...

印台区18088572323: HDU1236 Java代码一直WA,求解,附代码附注释 -
彭采辛可: import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // in.hasNextInt() 用来判断是否还能读取int while(in.hasNextInt()) { int n = in.nextInt(); int u = in.nextInt(); int d = in.nextInt(); if(n == 0) ...

印台区18088572323: acm编程题(c语言,一道),自己运行没错,但AC不了,老是Wrong Anwser,请大牛帮忙.题目如下: -
彭采辛可: #include "stdio.h"int main(){ int t,i,j,b[101]={0}; char a[100]; int n,m,temp; scanf("%d",...

印台区18088572323: c++字符串的展开,求大神改正 -
彭采辛可: #include <iostream>#include <stdio.h>#include <string.h> using namespace std; void InputString(char str1[], char str2[]) { gets(str1); for (int i=0; (str2[i]=getchar())!='\n'; i++); str2[i]='\0'; cout<<str1<<endl; cout<<str2<<endl; } void CombineString(char ...

印台区18088572323: 一道简单的ACM题,却总是MLE,都快疯了,帮忙解答一下 -
彭采辛可: 果出现内存不够的情况,唯一的可能就是你的队列消耗掉了太多内存.0<,结果肯定会远远超过int的表示范围;n≤30,n其实对应的是你程序里的num,也就是说maxsize一定是小于等于30的.但q的长度跟测试数据数量有关:先把从1到30的结果...

印台区18088572323: c语言多组数,求五位数数字回文,wa错在哪里了? -
彭采辛可: a=x/10000; b=(x/1000)%10; c=(x/100)%10; d=(x/10)%10; e=x%10;

印台区18088572323: wa怎么导入字符串7.03 -
彭采辛可: 输入/tmw弹出一个四个方格的框框右键框框弹出一个大对话框,最下边有一栏可以打字的地方,把复制好的字符串粘贴进去然后应该是点右侧的导入/导出/还原选导入字符串到XXX就行了

印台区18088572323: win10环境下vc6.0不能进行调试,按f10进入调试,再按f10进行单步执行时会卡在第一行,求解救. -
彭采辛可: 展开全部 将“工具>>选项>>调试>>反汇编窗口”,里面的勾去掉就可以了.

印台区18088572323: vc编程时 出现好多的“烫”是怎么回事? -
彭采辛可: 展开全部 是一个UNICODE码,没什么问题,c语言中对未赋值的字符都用这个代替

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网