本帖最后由 繁尘、离梦 于 2013-4-25 15:05 编辑
技能训练营开坑()!!!!每题第一个提交的亲并且能通过的亲,我会在结题前,把它的名字mark在题目后方!!!!!10~
最近看了下大家提问的内容,主要是:!27~算法为主,一些基础知识、习题啊什么的也带着些,
既然这样为了活跃社区,特开一个关于编程技能训练的互动帖。!7~
接下来楼主会找很多题目给新手们练习,时不时会更新一楼内容。
2楼是一道题目,一般持续1-2天,第三天会把2楼内容放到3楼,
3楼是历史题目,亲们也可以同样练习,
并且把代码发在下面的一些楼层里,
注明是第几题,楼主会去看代码去验证你的代码准确性和存在的问题
楼主是大水笔,亲们别怕出错,勇敢的训练起来~~
喵~~~!25~
希望版主们的支持~~
米娜桑,一叩首!054~
该贴已经同步到 繁尘、离梦的微博
本帖最后由 foodszhu 于 2013-4-24 15:37 编辑
略羞愧啊。。。。是时候复习一下了。。。这才几个月不写题就什么都不会写了。。。
第三题
[mw_shl_code=cpp,true]#include <stdlib.h>
#include <stdio.h>
#include<string.h>
int moveS(char s[],int f,int n)//字符串,方向,1左2右,起点;
{
int len = strlen(s);
if(f==1)
{
for(int i=n;i<len;i++)
{
s[i-1]=s;
}
s[len-1]=0;
}
else if(f == 2)
{
for(int i=len;i>n;i--)
{
s=s[i-1];
}
s[n]='-';
}
}
int reserve(char s[])
{
int len=strlen(s);
for(int i=0;i<len/2;i++)
{
int t=s;
s=s[len-i-1];
s[len-i-1]=t;
}
return 0;
}
int addC(char s1[],char s2[])
{
reserve(s1);
reserve(s2);
int len1=strlen(s1),len2=strlen(s2);
for(int i=0;i<(len1>len2?len1:len2);i++)
{
int t1=0,t2=0;
if(s1>=30)
{
t1=1;
s1-=48;
}
if(s2>=30)
{
t2=1;
s2-=48;
}
s1+=s2;
if(s1>9)
{
s1-=10;
s1[i+1]+=1;
if(s1[i+1]<30)
{
s1[i+1]+=48;
}
}
if(t1==1||t2==1)
{
s1+=48;
}
}
reserve(s1);
reserve(s2);
}
int pd(char s1[],char s2[])
{
if(strlen(s1)>strlen(s2))
{
return 1;
}
else if(strlen(s1)<strlen(s2))
{
return -1;
}
else
{
return strcmp(s1,s2);
}
}
int cutC(char s1[], char s2[])
{
reserve(s1);
reserve(s2);
int len1=strlen(s1),len2=strlen(s2);
for(int i=0;i<(len1>len2?len1:len2);i++)
{
int t1=0,t2=0;
if(s1>30)
{
t1=1;
s1-=48;
}
if(s2>30)
{
t2=1;
s2-=48;
}
s1-=s2;
if(s1<0)
{
s1+=10;
s1[i+1]-=1;
}
if(t1==1||t2==1)
{
s1+=48;
}
}
reserve(s1);
reserve(s2);
while(s1[0]=='0')
{
moveS(s1,1,1);
}
}
int main()
{
char s1[1600]={0},s2[1600]={0},c=0;
int T;
scanf("%d", &T);
for(int i = 0; i < T; i++)
{
scanf("%s %c %s",s1,&c,s2);
if(c=='+')
{
if(s1[0] == '-' && s2[0] == '-')
{
moveS(s1, 1, 1);
moveS(s2, 1, 1);
addC(s1,s2);
printf("Case:%d:-%s\n",i + 1, s1);
}
else if(s1[0] == '-' && s2[0] != '-')
{
moveS(s1, 1, 1);
if(pd(s1, s2) > 0)
{
cutC(s1, s2);
printf("Case:%d:-%s\n",i + 1, s1);
}
else
{
cutC(s2, s1);
printf("Case:%d:%s\n",i + 1, s2);
}
}
else if(s1[0] != '-' && s2[0] == '-')
{
moveS(s2, 1, 1);
if(pd(s1, s2) > 0)
{
cutC(s1, s2);
printf("Case:%d:%s\n",i + 1, s1);
}
else
{
cutC(s2, s1);
printf("Case:%d:-%s\n",i + 1, s2);
}
}
else
{
addC(s1,s2);
printf("Case:%d:%s\n",i + 1, s1);
}
}
memset(s1, 0, sizeof(s1));
memset(s2, 0, sizeof(s2));
}
}
[/mw_shl_code]
[查看全文]
#include <stdio.h>
#include <string.h>
#include *本站禁止HTML标签噢*
#define MAXN 10
int N;
char map[MAXN][MAXN];
bool check(int x,int y)
{
if(map[x][y]!='.')return false;
for(int i=y; i>=0&&map[x]!='X'; i--)
if(map[x]=='B')return false;
for(int i=x; i>=0&&map[y]!='X'; i--)
if(map[y]=='B')return false;
return true;
}
int MAX=-1;
void search(int step,int num)
{
int x=step/N;
int y=step%N;
if(step==N*N)
{
if(num>MAX)MAX=num;
return ;
}
if(map[x][y]=='.')
{
if(check(x,y))
{
map[x][y]='B';
search(step+1,num+1);
map[x][y]='.';
}
}
search(step+1,num);
}
int main()
{
#ifdef WXCC
freopen("in.in","r",stdin);
#endif
while(scanf("%d",&N)!=EOF)
{
if(N==0)break;
MAX=-1;
for(int i=0; i<N; i++)
scanf("%s",map);
search(0,0);
printf("%d\n",MAX);
}
}
ac鸟~
[查看全文]
