#include<stdio.h>
#include<string.h>
#include<assert.h>
1.左旋字符
void left_revolve(char arr[], int k)
{
int i = 0;
int len = strlen(arr);
k %= len;
for (i = 0; i < k; i++)
{
int tmp = arr[0];//第一步
int j = 0;
for (j = 0; j < len - 1; j++)//第二步
{
arr[j] = arr[j + 1];
}
arr[len - 1] = tmp;//第三步
}
}
//左旋第二种做法
void reverse(char* left ,char* right)
{
assert(left && right);
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
void left_revolve(char arr[], int k)
{
int len = strlen(arr);
reverse(arr,arr+k-1);
reverse(arr+k,arr+len-1);
reverse(arr,arr+len-1);
}
int main()
{
char arr[] = "abcdef";
int k = 0;
scanf("%d", &k);
left_revolve(arr, k);
printf("%s", arr);
return 0;
}
//2.杨辉矩阵查找数字
char find_num(int arr[3][3], int *px, int *py, int k)
{
int x = 0;
int y = *py - 1;
int i = 0;
while (x < *px - 1 && y>0)
{
if (k < arr[x][y])
{
y--;
}
else if(k > arr[x][y])
{
x++;
}
else
{
*px = x;
*py = y;
return 1;
}
}
*px = -1;
*py = -1;
return 0;//找不到
}
int main()
{
int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
int k = 0;
scanf("%d", &k);
int a = 0;
int b = 0;
int ret = find_num(arr, &a, &b, k);
if (ret == 1)
{
printf("%d %d", a, b);
}
else
{
printf("没找到");
}
}
//上三角矩阵判定
int mian()
{
int n = 0;
scanf("%d", &n);
int arr[10][10] = { 0 };
int i = 0;
int j = 0;
int flag = 1;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", arr[i][j]);
}
}
for (i = 0; i < n; i++)
{
for (j = 0;j < i; j++)
{
if (arr[i][j] != 0)
{
flag = 0;
goto end;
}
}
}
end:
if (flag == 0)
printf("NO\n" );
else
printf("YES\n");
return 0;
}